Maven Plugin配置,配置信息参考以下文档,分两步执行,也可以使用其它方案:
http://tomcat.apache.org/maven-plugin-2.2/index.html
http://tomcat.apache.org/maven-plugin-trunk/tomcat6-maven-plugin/run-mojo.html
http://tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/run-mojo.html
生成 Tomcat 密钥的文档:http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html
本配置的环境限制是 Maven3.0 或以上,Jdk1.6 或以上,同时您的Maven工程是标准的Maven工程。
Tomcat7 可以使用 Servlet 3.0,强烈建议升级使用,本示例使用的插件版本是 2.2 版,本文发表时是最新的RELEASE版。
请勿再使用 tomcat:run, 这个命令已经过时,暂时没有发现通过 Tomcat8 运行的配置。
二选一,在 Maven 的 setting.xml 中添加如下配置:
....
....
org.apache.tomcat.maven
....
....
二选一,在项目的 pom.xml 里面添加如下配置:
....
....
org.apache.tomcat.maven
tomcat6-maven-plugin
2.2
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
....
....
使用Eclipse的Maven Build运行,Goals配置,如图:
配置二选一,tomcat6启动:
tomcat6:run -Dmaven.tomcat.uriEncoding=UTF-8 -Dmaven.tomcat.path=/ -Dmaven.tomcat.port=8080 -Dmaven.tomcat.httpsPort=8443
配置二选一,tomcat7启动:
tomcat7:run -Dmaven.tomcat.uriEncoding=UTF-8 -Dmaven.tomcat.path=/ -Dmaven.tomcat.port=8080 -Dmaven.tomcat.httpsPort=8443
不修改setting.xml和pom.xml,指定插件的版本:
配置二选一,Tomcat6运 行:
org.apache.tomcat.maven:tomcat6-maven-plugin:2.2:run -Dmaven.tomcat.uriEncoding=UTF-8
配置二选一,Tomcat7运 行:
org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run -Dmaven.tomcat.uriEncoding=UTF-8
同样都可以补上虚拟路径和端口配置:
-Dmaven.tomcat.path=/ -Dmaven.tomcat.port=8080 -Dmaven.tomcat.httpsPort=8443
以上方案配置完成之后,第一次运行时,Maven会自动去下载插件依赖,编译并运行Web应用,成功之后就可以愉快的通过浏览器访问你的应用。
用Maven的命令行运行只要在这些命名前加 mvn 即可。
-Dmaven.tomcat.uriEncoding=UTF-8 这个配置建议始终加上
-Dmaven.tomcat.path=/ 这个配置可以不加,默认使用 /${artifactId},如果配置了,建议带上双引号,例如:-Dmaven.tomcat.path="/test"
-Dmaven.tomcat.port=8080 这个配置如果不设置,默认就是8080
如果像我一样使用 Eclipse 执行,可以将这些参数配置到 Parameter 中,如图:
Tomcat 开启https前需要先生成 .keystore 文件,命令如下:
Windows:
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA
Unix:
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
输入以上命令后输入密钥:changeit,剩下的内容可以一直回车或输入 Y 就完成了。
使用 Maven 的插件运行 Web 工程可以做到快速部署,提升开发效率。以前我使用Eclipse自带的Server配置来启动Web应用,虽然看起来更切合生产环境,但实际开发过程中因为各种问题,导致经常出现内存不足或运行出错,严重影响心情,而且实际上与生产的区别还是挺大的。