如今最新的Eclipse Luna Release 已经内置了Maven插件,这让咱们的工做简洁了很多,只要把项目直接导入就能够,不用考虑插件什么的问题,可是导入以后的项目既能够部署在Tomcat也能够部署在Jetty服务器上,如下是调试过程。首先新建一个Maven的Web 项目,能够参考:Maven学习笔记-04-Eclipse和Maven集成css
Java: JDK7+html
Eclipse: Eclipse Java EE IDE for Web Developers ,Version:Luna Release (4.4.0)java
Maven: 3.2.5web
Tomcat: 7+redis
Tomcat7和8的配置用户权限是同样的,更多能够参考官方文档(http://tomcat.apache.org/)的说明。此外配置独立服务器还要修改Tomcat的tomcat-user.xml文件,把用户权限加进去。apache
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user password="admin" roles="manager-gui,admin-gui,manager-script" username="admin"/>
其中manager-gui和admin-gui是Tomcat的管理界面,manager-script指的就是maven插件能够访问的用户权限规则。以下图所示:json
而后就能够进入Tomcat的管理页面了。api
Tomcat7能够参考在官方文档(http://tomcat.apache.org/maven-plugin-2.2/)中关于maven插件的配置。Tomcat插件网页:http://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/run-mojo.html浏览器
1 <build> 2 3 <pluginManagement> 4 <plugins> 5 <plugin> 6 <groupId>org.apache.maven.plugins</groupId> 7 <artifactId>maven-war-plugin</artifactId> 8 <version>2.1.1</version> 9 <configuration> 10 <webXml>src/main/webapp/WEB-INF/web.xml</webXml> 11 </configuration> 12 </plugin> 13 14 <plugin> 15 <groupId>org.apache.tomcat.maven</groupId> 16 <artifactId>tomcat7-maven-plugin</artifactId> 17 <version>2.2</version> 18 <configuration> 19 <port>8080</port>
<path>/xpxiaowuApp</path> 20 <username>admin</username> 21 <password>admin</password> 22 </configuration> 23 </plugin> 24 25 </plugins> 26 </pluginManagement> 27 28 </build>
在第19行,Tomcat插件使用的端口是8080, Web App在Tomcat中的部署地址 xpxiaowuApp。缓存
三.运行Tomcat7的Maven插件
以上步骤配置好后,在命令行输入命令:
mvn tomcat7:run
若是一切顺利,会出现一下提示。
D:\workspace_maven>mvn tomcat7:run [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building xpxiaowuApp 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> tomcat7-maven-plugin:2.2:run (default-cli) > process-classes @ xpxiao wuApp >>> [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xpxiaowuAp p --- [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e . build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ xpxiaowuApp --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] <<< tomcat7-maven-plugin:2.2:run (default-cli) < process-classes @ xpxiaowuApp <<< [INFO] [INFO] --- tomcat7-maven-plugin:2.2:run (default-cli) @ xpxiaowuApp --- [INFO] Running war on http://localhost:8080/xpxiaowuApp [INFO] Using existing Tomcat server configuration at D:\workspace_maven\target\tomcat [INFO] create webapp with contextPath: /xpxiaowuApp 五月 27, 2015 9:17:12 下午 org.apache.coyote.AbstractProtocol init 信息: Initializing ProtocolHandler ["http-bio-8080"] 五月 27, 2015 9:17:12 下午 org.apache.catalina.core.StandardService startInternal 信息: Starting service Tomcat 五月 27, 2015 9:17:12 下午 org.apache.catalina.core.StandardEngine startInternal 信息: Starting Servlet Engine: Apache Tomcat/7.0.47 五月 27, 2015 9:17:13 下午 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["http-bio-8080"]
在浏览器中输入 http://localhost:8080/xpxiaowuApp/ ,能够看到欢迎页面。
注意: 实验证实以上步骤在Tomcat8中一样配置成功。
使用maven 的tomcat8插件,pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dxtd</groupId> <artifactId>monitor</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>monitor Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> </dependency> <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat8-maven-plugin</artifactId> <version>3.0-r1655215</version> <configuration> <!-- 能够灵活配置工程路径 --> <path>/monitor</path> <!-- 能够灵活配置端口号 --> <port>9090</port> </configuration> </plugin> </plugins> </build> <pluginRepositories> <pluginRepository> <id>alfresco-public</id> <url>https://artifacts.alfresco.com/nexus/content/groups/public</url> </pluginRepository> <pluginRepository> <id>alfresco-public-snapshots</id> <url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </snapshots> </pluginRepository> <pluginRepository> <id>beardedgeeks-releases</id> <url>http://beardedgeeks.googlecode.com/svn/repository/releases</url> </pluginRepository> </pluginRepositories> </project>
而后运行命令
mvn tomcat8:run
1 Jetty能够参考官方文档( http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html)
1 <plugin> 2 <groupId>org.eclipse.jetty</groupId> 3 <artifactId>jetty-maven-plugin</artifactId> 4 5 </plugin>
以上步骤配置好后,在命令行输入命令:
mvn jetty:run
在浏览器输入 http://127.0.0.1:8080/xpxiaowuApp/index.html 就能够访问项目了。
2 设置jetty(maven插件maven-jetty-plugin)的端口 ,具体配置请查看官方文档:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html#configuring-jetty-container,修改端口的配置以下。
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xinping</groupId> <artifactId>TestWeb</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!-- 为整个项目统一指定字符集 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <!-- 打包的war名称设置 --> <finalName>TestWeb</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.0.6.v20130930</version>
<configuration>
<httpConnector>
<port>9090</port>
</httpConnector>
<webAppConfig>
<contextPath>/${project.artifactId}</contextPath>
</webAppConfig>
</configuration>
</plugin>
</plugins>
</pluginManagement> </build> </project>
注意:maven集成jetty插件后会出现问题,maven jetty 启动后,不能修改静态文件,js,css,html
1 现象
运行 mvn jetty:run 之后,发现静态资源文件修改后没法保存,IDE 提示 “请求的操做没法在使用用户映射区域打开的文件上执行”。
2 缘由
若是NIO被支持的话,Jetty会使用内存映射文件来缓存静态文件,其中包括.js文件。在Windows下,使用内存映射文件会致使文件被锁定。解决方案是不使用内存映射文件来作缓存。
3 解决方案:
版本:jetty 9.0.6
1)找到 .m2\org\eclipse\jetty\jetty-webapp\9.0.6.v20130930中,找到 jetty-webapp-9.0.6.v20130930.jar,解压缩这个文件, jetty-*.jar 中 org/mortbay/jetty/webapp/webdefault.xml 文件
修改
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>true</param-value>
</init-param>
为
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>
2)将webdefault.xml文件放在maven web 的pom同级目录
3)修改maven中<configuration>属性,在属性中添加以下配置:
<build>
<finalName>oneWeb1</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.0.6.v20130930</version>
<configuration>
<httpConnector>
<port>9090</port>
</httpConnector>
<webAppConfig>
<contextPath>/${project.artifactId}</contextPath>
<defaultsDescriptor>webdefault.xml</defaultsDescriptor>
</webAppConfig>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
在 Eclipse中点击Maven的Web项目,右键选择Run As => Maven Build
在配置窗口中Goals列中填写Maven命令: jetty:run , 保存配置,而后运行这个配置。
此时查看Eclipse的console控制台,会给出如下提示信息:
<!-- 配置插件仓库 -->
<repositories>
<!-- restlet 插件仓库 -->
<repository>
<id>maven-restlet</id>
<name>Public online Restlet repository</name>
<url>http://maven.restlet.org</url>
</repository>
<repository>
<id>maven2-repository.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
</repository>
<repository>
<id>oschina Releases</id>
<name>oschina Releases</name>
<url>http://maven.oschina.net/content/groups/public</url>
</repository>
<repository>
<id>nexus-osc</id>
<name>Nexus osc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</repository>
<repository>
<id>nexus-osc-thirdparty</id>
<name>thirdparty</name>
<url>http://maven.oschina.net/content/repositories/thirdparty/</url>
</repository>
<!-- jesery插件仓库 -->
<repository>
<id>snapshot-repository.java.net</id>
<name>Java.net Snapshot Repository for Maven</name>
<url>https://maven.java.net/content/repositories/snapshots/</url>
<layout>default</layout>
</repository>
</repositories>
参考资料:
Tomcat7插件部署
http://blog.csdn.net/binyao02123202/article/details/17793233