运行Tomcat并使用自己的server.xml部署项目

Koi*_*oer 9 java tomcat maven

我只想运行一个使用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>
Run Code Online (Sandbox Code Playgroud)

这没关系.它现在正在运行,并且使用上面的配置文件部署了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>
Run Code Online (Sandbox Code Playgroud)

但是tomcat开始部署webapp工件但不使用新的配置文件.

什么是正确的配置,我检查了这篇文章,但没有,这是可能的或我应该使用tomcat管理器手动添加war文件?

Did*_*r L 15

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>
Run Code Online (Sandbox Code Playgroud)

"webapp"是我生成的战争名称.显然,appBase是相对于target/tomcat(和"webapps"似乎是默认值).docBase相对于appBase这样为了简化我使用的相对路径来生成目录.

这对我有用,没有那个<Context>元素,我会得到一个白页.

如果您使用过滤,则可以替换docBase属性.但请注意从war文件中排除server.xml(和tomcat-users.xml)!