我只想运行一个已经使用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应用程序构件没有在那里部署
(当我运行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工件,但不使用新的配置文件。
什么是正确的配置,这是可能的,还是我应该使用tomcat管理器手动添加war文件?
该tomcat7 - Maven的插件文件说的<serverXml>
:
要使用的server.xml 请注意,如果使用此服务器,则必须在此文件中配置webapp路径。
我认为这意味着您必须在<Context>
元素内部插入具有战争路径的<Host>
元素,如下所示:
<Host appBase="webapps" autoDeploy="true" deployXML="false" name="localhost" unpackWARs="true">
<Context docBase="../../webapp" path="/webapp" reloadable="true" />
</Host>
其中“ webapp”是我生成的战争名称。显然,appBase
是相对于target/tomcat
(并且“
webapps”似乎是默认值)。docBase
是相对的,appBase
为简单起见,我使用了build目录的相对路径。
这为我工作,如果没有该<Context>
元素,我将获得白页。
如果您正在使用过滤,则可以用docBase
属性代替。但是请注意从您的war文件中排除server.xml(和tomcat-users.xml)!