原文地址:https://www.cnblogs.com/mozisss/p/10233366.html
功能:
(使用maven中的tomcat插件,就可以將tomcat集成到項目中,效果就是:在不同平台中無需配置tomcat就可以直接運行web)
地址:
tomcat官網maven插件:http://tomcat.apache.org/maven-plugin.html
使用方法:
(1)在maven項目的pom.xml中添加插件依賴:
<pluginManagement> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/mozi</path> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin> </plugins> </pluginManagement>
(解釋: path: 當前web項目的url訪問入口,即http://localhost:8080/mozi/ ; 若設置為<path>/</path> 則訪問url為:http://localhost:8080/ port:訪問的端口號 uriEncoding: uri的訪問編碼) (2)等待插件加載完后,在就可以使用maven命令運行tomcat7了,這里用的是idea:
(maven命令:mvn tomcat7:run )
(3)啟動結果:
(4)測試: 在瀏覽器中輸入http://localhost:8080/mozi , 將訪問到項目mozi的index.jsp
tomcat7-maven-plugin的其他命令:
tomcat7:run --啟動嵌入式tomcat ,並運行當前項目
tomcat7:deploy --部署一個web war包
tomcat7:reload --重新加載web war包
tomcat7:start --啟動tomcat
tomcat7:stop --停止tomcat
tomcat7:undeploy --停止一個war包
遇到過的坑:
(1)啟動tomcat7時異常:java.lang.ClassNotFoundException: org.apache.catalina.deploy.ServletDef
在pom.xml文件中,添加tomcat7-maven-plugin后不要添加tomcat7的其他依賴,如果有就去掉。如下面是tomcat7的包依賴,即<dependency>和<plugin>選其一:
<dependency> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </dependency>
(否則,在啟動時tomcat會在tomcat/lib 下加載包,但在嵌入式tomcat目錄中沒有lib)
(2)啟動時:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
在項目目錄下 target/tomcat/conf/context.xml 添加:
<Context> <Loader delegate="true" /></Context>
(關於tomcat的delegate機制,,,)
注:由於配置的環境、依賴包版本的不同,以上介紹的方法可能有所不同)