我只想运行一个使用pom.xml在maven项目中配置的Web项目 . 它使用maven tomcat7-maven-plugin来部署Web应用程序工件,此时所有工作正常 .
现在我想在tomcat配置中添加自己的server.xml和tomcat-users.xml . 我读到我需要添加以下行 .
<serverXml>src/main/resources/tomcat/server.xml</serverXml>
<tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers>
这没关系 . 它现在正在使用,并且使用上面的配置文件部署了tomcat,但问题是> Web application artifact is not deployed there (当我运行tomcat7:run时不会自动部署) . 看来插件没有检测到工件,只是启动tomcat服务器而不将工件添加到webapps只需使用新的配置文件 .
我用这个配置 .
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>exec-war-only</goal>
</goals>
<phase>package</phase>
<configuration>
<url>http://localhost:8080/web-services</url>
<path>/web-services</path>
<serverXml>src/main/resources/tomcat/server.xml</serverXml>
<tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers>
<warRunDependencies>
<warRunDependency>
<dependency>
<groupId>com.koitoer.webservices</groupId>
<artifactId>web-services</artifactId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
<contextPath>/web-services</contextPath>
</warRunDependency>
</warRunDependencies>
</configuration>
</execution>
</executions>
</plugin>
但是tomcat开始部署webapp工件但不使用新的配置文件 .
什么是正确的配置,我检查了这个post但没有,这是可能的,或者我应该使用tomcat管理器手动添加war文件?
3 回答
tomcat7-maven-plugin documentation对
<serverXml>
说:我想这意味着你必须在
<Host>
元素中插入带有战争路径的<Context>
元素,如下所示:"webapp"是我生成的战争名称 . 显然,
appBase
是相对于target/tomcat
(并且"webapps"似乎是默认值) .docBase
是相对于appBase
所以为了简单起见,我使用了构建目录的相对路径 .这对我有用,如果没有
<Context>
元素,我会得到一个白页 .如果您使用过滤,则可以用属性替换
docBase
. 但请注意从war文件中排除server.xml(和tomcat-users.xml)!我已将以下内容添加到 server.xml 中,并且我的应用程序与tomcat7:run-war命令正常工作:
以下是我在 pom.xml 中配置插件的方法
我已将
server.xml
其他配置文件放入src/main/tomcatconf
目录(插件的默认值),并将context.xml
放入META-INF
dir并放入src/main/tomcatconf
. 该插件似乎从其中一个目录中获取context.xml
.希望这对你有用 .
我想你可以试试这个配置
参考:https://wiki.base22.com/display/btg/How+to+create+a+Maven+web+app+and+deploy+to+Tomcat+-+fast
希望这可以帮助 .