首先安装nexus做为maven的私服:

点击install-nexus安装nexus为服务后,访问:http://localhost:8081/nexus/
点击后上角的log in输入默认用户名和密码:admin/admin123,然后点击左侧的菜单repositories,依次单击将右面显示的三个type为proxy的configure中的Download Remote Indexes设置为true;
这么做的目的是同步下载远程索引到本地,以便本地快速搜索。点击保存后依次右键这3个仓库将其repair index。以便更新本地索引。

2,配置maven,关于maven环境变量的设置就不说了。网上有的是。
001 | <?xml version="1.0" encoding="UTF-8"?> |
002 | <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" |
003 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
004 | xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> |
005 | <!-- localRepository |
006 | | The path to the local repository maven will use to store artifacts. |
007 | | |
008 | | Default: ~/.m2/repository--> |
009 | <localRepository>F:/mvn/repository</localRepository> |
010 | |
011 |
012 | <!-- interactiveMode |
013 | | This will determine whether maven prompts you when it needs input. If set to false, |
014 | | maven will use a sensible default value, perhaps based on some other setting, for |
015 | | the parameter in question. |
016 | | |
017 | | Default: true |
018 | <interactiveMode>true</interactiveMode> |
019 | --> |
020 |
021 | <!-- offline |
022 | | Determines whether maven should attempt to connect to the network when executing a build. |
023 | | This will have an effect on artifact downloads, artifact deployment, and others. |
024 | | |
025 | | Default: false |
026 | <offline>false</offline> |
027 | --> |
028 |
029 | <!-- pluginGroups |
030 | | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e. |
031 | | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers |
032 | | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list. |
033 | |--> |
034 | <pluginGroups> |
035 | <!-- pluginGroup |
036 | | Specifies a further group identifier to use for plugin lookup. |
037 | <pluginGroup>com.your.plugins</pluginGroup> |
038 | --> |
039 | </pluginGroups> |
040 |
041 | <!-- proxies |
042 | | This is a list of proxies which can be used on this machine to connect to the network. |
043 | | Unless otherwise specified (by system property or command-line switch), the first proxy |
044 | | specification in this list marked as active will be used. |
045 | |--> |
046 | <proxies> |
047 | <!-- proxy |
048 | | Specification for one proxy, to be used in connecting to the network. |
049 | | |
050 | <proxy> |
051 | <id>optional</id> |
052 | <active>true</active> |
053 | <protocol>http</protocol> |
054 | <username>proxyuser</username> |
055 | <password>proxypass</password> |
056 | <host>proxy.host.net</host> |
057 | <port>80</port> |
058 | <nonProxyHosts>local.net|some.host.com</nonProxyHosts> |
059 | </proxy> |
060 | --> |
061 | </proxies> |
062 |
063 | <!-- servers |
064 | | This is a list of authentication profiles, keyed by the server-id used within the system. |
065 | | Authentication profiles can be used whenever maven must make a connection to a remote server. |
066 | |--> |
067 | <servers> |
068 | <server> |
069 | <id>nexus-releases</id> |
070 | <username>admin</username> |
071 | <password>admin123</password> |
072 | </server> |
073 | <server> |
074 | <id>nexus-snapshots</id> |
075 | <username>admin</username> |
076 | <password>admin123</password> |
077 | </server> |
078 | <!-- server |
079 | | Specifies the authentication information to use when connecting to a particular server, identified by |
080 | | a unique name within the system (referred to by the 'id' attribute below). |
081 | | |
082 | | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are |
083 | | used together. |
084 | | |
085 | <server> |
086 | <id>deploymentRepo</id> |
087 | <username>repouser</username> |
088 | <password>repopwd</password> |
089 | </server> |
090 | --> |
091 | |
092 | <!-- Another sample, using keys to authenticate. |
093 | <server> |
094 | <id>siteServer</id> |
095 | <privateKey>/path/to/private/key</privateKey> |
096 | <passphrase>optional; leave empty if not used.</passphrase> |
097 | </server> |
098 | --> |
099 | </servers> |
100 |
101 | <!-- mirrors |
102 | | This is a list of mirrors to be used in downloading artifacts from remote repositories. |
103 | | |
104 | | It works like this: a POM may declare a repository to use in resolving certain artifacts. |
105 | | However, this repository may have problems with heavy traffic at times, so people have mirrored |
106 | | it to several places. |
107 | | |
108 | | That repository definition will have a unique id, so we can create a mirror reference for that |
109 | | repository, to be used as an alternate download site. The mirror site will be the preferred |
110 | | server for that repository. |
111 | |--> |
112 | <mirrors> |
113 | <!-- mirror |
114 | | Specifies a repository mirror site to use instead of a given repository. The repository that |
115 | | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used |
116 | | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. |
117 | | |
118 | <mirror> |
119 | <id>mirrorId</id> |
120 | <mirrorOf>repositoryId</mirrorOf> |
121 | <name>Human Readable Name for this Mirror.</name> |
122 | <url>http://my.repository.com/repo/path</url> |
123 | </mirror> |
124 | --> |
125 | <mirror> |
126 | <id>nexus</id> |
127 | <mirrorOf>*</mirrorOf> |
128 | <name>Nexus Mirror</name> |
129 | <url>http://localhost:8081/nexus/content/groups/public</url> |
130 | </mirror> |
131 | </mirrors> |
132 | |
133 | <!-- profiles |
134 | | This is a list of profiles which can be activated in a variety of ways, and which can modify |
135 | | the build process. Profiles provided in the settings.xml are intended to provide local machine- |
136 | | specific paths and repository locations which allow the build to work in the local environment. |
137 | | |
138 | | For example, if you have an integration testing plugin - like cactus - that needs to know where |
139 | | your Tomcat instance is installed, you can provide a variable here such that the variable is |
140 | | dereferenced during the build process to configure the cactus plugin. |
141 | | |
142 | | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles |
143 | | section of this document (settings.xml) - will be discussed later. Another way essentially |
144 | | relies on the detection of a system property, either matching a particular value for the property, |
145 | | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a |
146 | | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'. |
147 | | Finally, the list of active profiles can be specified directly from the command line. |
148 | | |
149 | | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact |
150 | | repositories, plugin repositories, and free-form properties to be used as configuration |
151 | | variables for plugins in the POM. |
152 | | |
153 | |--> |
154 | <profiles> |
155 | <profile> |
156 | <id>nexus</id> |
157 | <repositories> |
158 | <repository> |
159 | <id>nexus-releases</id> |
160 | <name>local private nexus</name> |
161 | <url>http://localhost:8081/nexus/content/groups/public</url> |
162 | <releases><enabled>true</enabled></releases> |
163 | <snapshots><enabled>false</enabled></snapshots> |
164 | </repository> |
165 | <repository> |
166 | <id>nexus-snapshots</id> |
167 | <name>local private nexus</name> |
168 | <url>http://localhost:8081/nexus/content/groups/public-snapshots</url> |
169 | <releases><enabled>false</enabled></releases> |
170 | <snapshots><enabled>true</enabled></snapshots> |
171 | </repository> |
172 | </repositories> |
173 | <pluginRepositories> |
174 | <pluginRepository> |
175 | <id>nexus-releases</id> |
176 | <name>local private nexus</name> |
177 | <url>http://localhost:8081/nexus/content/groups/public</url> |
178 | <releases><enabled>true</enabled></releases> |
179 | <snapshots><enabled>false</enabled></snapshots> |
180 | </pluginRepository> |
181 | <pluginRepository> |
182 | <id>nexus-snapshots</id> |
183 | <name>local private nexus</name> |
184 | <url>http://localhost:8081/nexus/content/groups/public-snapshots</url> |
185 | <releases><enabled>false</enabled></releases> |
186 | <snapshots><enabled>true</enabled></snapshots> |
187 | </pluginRepository> |
188 | </pluginRepositories> |
189 | </profile> |
190 | <!-- profile |
191 | | Specifies a set of introductions to the build process, to be activated using one or more of the |
192 | | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/> |
193 | | or the command line, profiles have to have an ID that is unique. |
194 | | |
195 | | An encouraged best practice for profile identification is to use a consistent naming convention |
196 | | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc. |
197 | | This will make it more intuitive to understand what the set of introduced profiles is attempting |
198 | | to accomplish, particularly when you only have a list of profile id's for debug. |
199 | | |
200 | | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo. |
201 | <profile> |
202 | <id>jdk-1.4</id> |
203 |
204 | <activation> |
205 | <jdk>1.4</jdk> |
206 | </activation> |
207 |
208 | <repositories> |
209 | <repository> |
210 | <id>jdk14</id> |
211 | <name>Repository for JDK 1.4 builds</name> |
212 | <url>http://www.myhost.com/maven/jdk14</url> |
213 | <layout>default</layout> |
214 | <snapshotPolicy>always</snapshotPolicy> |
215 | </repository> |
216 | </repositories> |
217 | </profile> |
218 | --> |
219 |
220 | <!-- |
221 | | Here is another profile, activated by the system property 'target-env' with a value of 'dev', |
222 | | which provides a specific path to the Tomcat instance. To use this, your plugin configuration |
223 | | might hypothetically look like: |
224 | | |
225 | | ... |
226 | | <plugin> |
227 | | <groupId>org.myco.myplugins</groupId> |
228 | | <artifactId>myplugin</artifactId> |
229 | | |
230 | | <configuration> |
231 | | <tomcatLocation>${tomcatPath}</tomcatLocation> |
232 | | </configuration> |
233 | | </plugin> |
234 | | ... |
235 | | |
236 | | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to |
237 | | anything, you could just leave off the <value/> inside the activation-property. |
238 | | |
239 | <profile> |
240 | <id>env-dev</id> |
241 |
242 | <activation> |
243 | <property> |
244 | <name>target-env</name> |
245 | <value>dev</value> |
246 | </property> |
247 | </activation> |
248 |
249 | <properties> |
250 | <tomcatPath>/path/to/tomcat/instance</tomcatPath> |
251 | </properties> |
252 | </profile> |
253 | --> |
254 | </profiles> |
255 |
256 | <!-- activeProfiles |
257 | | List of profiles that are active for all builds. |
258 | | |
259 | <activeProfiles> |
260 | <activeProfile>alwaysActiveProfile</activeProfile> |
261 | <activeProfile>anotherAlwaysActiveProfile</activeProfile> |
262 | </activeProfiles> |
263 | --> |
264 | <activeProfiles> |
265 | <activeProfile>nexus</activeProfile> |
266 | </activeProfiles> |
267 | </settings> |
主要是配置repository。它的ID对应的是maven中的repository.以便maven能使用nexus搜索和管理组件,极大节约带宽,加速开发。
maven的配置如下:
01 | <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
02 | <modelVersion>4.0.0</modelVersion> |
03 | <groupId>com.tudou</groupId> |
04 | <artifactId>tudouSystem</artifactId> |
05 | <packaging>war</packaging> |
06 | <version>0.0.1-SNAPSHOT</version> |
07 | <name>tudouSystem Maven Webapp</name> |
08 | <!--<url>http://maven.apache.org</url> --> |
09 | <properties> |
10 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
11 | <tomcatPath>D:\progra\tomcat6</tomcatPath> |
12 | </properties> |
13 | <distributionManagement> |
14 | <repository> |
15 | <id>nexus-releases</id> |
16 | <name>Nexus Release Repository</name> |
17 | <url>http://localhost:8081/nexus/content/repositories/releases/</url> |
18 | </repository> |
19 | <snapshotRepository> |
20 | <id>nexus-snapshots</id> |
21 | <name>Nexus Snapshot Repository</name> |
22 | <url>http://localhost:8081/nexus/content/repositories/snapshots/ |
23 | </url> |
24 | </snapshotRepository> |
25 | </distributionManagement> |
26 | <dependencies> |
27 | <dependency> |
28 | <groupId>javax.servlet</groupId> |
29 | <artifactId>javax.servlet-api</artifactId> |
30 | <version>3.0.1</version> |
31 | </dependency> |
32 | </dependencies> |
33 | <build> |
34 | <plugins> |
35 | <!-- Run As Maven build : clean package 就可以发布到tomcat下了,并按照<warName>命名 访问应用时,访问该地址即可:http://IP:Port/warName/ --> |
36 | <plugin> |
37 | <artifactId>maven-war-plugin</artifactId> |
38 | <version>2.2</version> |
39 | <configuration> |
40 | <!--默认打包名为项目名称,生成的WAR存放在target下--> |
41 | <warName>tudouSystem</warName> |
42 | <outputDirectory>${tomcatPath}\webapps</outputDirectory> |
43 | <!--修改JSP文件后不能重新编译发布--> |
44 | <webappDirectory>${basedir}/src/main/webapp</webappDirectory> |
45 | <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory> |
46 | </configuration> |
47 | </plugin> |
48 | </plugins> |
49 | </build> |
50 | </project> |

这是还必须配置tomcat,<Context docBase="E:\java\newwork\tudouSystem\src\main\webapp" path="/tudouSystem" reloadable="false" />
项目的WEB.XML
01 | <?xml version="1.0" encoding="UTF-8"?> |
02 | <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" |
03 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
04 | xsi:schemaLocation="http://java.sun.com/xml/ns/javaee |
05 | http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> |
06 | <servlet> |
07 | <servlet-name>TestServlet</servlet-name> |
08 | <servlet-class>com.tudou.web.servlet.TestServlet</servlet-class> |
09 | </servlet> |
10 | <servlet-mapping> |
11 | <servlet-name>TestServlet</servlet-name> |
12 | <url-pattern>/TestServlet</url-pattern> |
13 | </servlet-mapping> |
14 |
15 | <welcome-file-list> |
16 | <welcome-file>/TestServlet</welcome-file> |
17 | </welcome-file-list> |
18 | <display-name>Archetype Created Web Application</display-name> |
19 | </web-app> |
package com.tudou.web.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @className:TestServlet.java
* @classDescription:
* @author:很拽の土豆
* @createTime:2012-8-25 上午4:31:48
*/
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("YouName", "很拽の土豆");
req.getRequestDispatcher("/index.jsp").forward(req, resp);
}
}
JSP页面:
01 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
02 | pageEncoding="UTF-8"%> |
03 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
04 | <html> |
05 | <head> |
06 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
07 | <title>Insert title here</title> |
08 | </head> |
09 | <body> |
10 | <h2>欢迎:${YouName}</h2> |
11 | </body> |
12 | </html> |
右键:debug as ->maven clean ->package这是项目可以正常访问了。但是修改Servlet后必须重启服务。
3,安装jrebel
eclipse菜单help->eclipse market->install jrebel。next安装完之后会提示你重启。此时不要重启。因为jrebel是付费版。下载破解版jrebel.jar5.0。在eclipse/plugins下面搜索jrebel.jar然后定位到其所在的文件夹,复制进去覆盖。启动eclipse后选中项目debug as ->debug configurion,点击apache tomcat后会看到最后面的jrebel,勾选enabled jrebel。点击run.

此时修改servlet后发现不用重启tomcat了~!~~~
4633

被折叠的 条评论
为什么被折叠?



