首页 文章

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

提问于
浏览
9

我只想运行一个使用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 回答

  • 4

    tomcat7-maven-plugin documentation<serverXml> 说:

    要使用的server.xml注意如果使用此选项,则必须在此文件中配置webapp路径 .

    我想这意味着你必须在 <Host> 元素中插入带有战争路径的 <Context> 元素,如下所示:

    <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 所以为了简单起见,我使用了构建目录的相对路径 .

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

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

  • 0

    我已将以下内容添加到 server.xml 中,并且我的应用程序与tomcat7:run-war命令正常工作:

    <Host appBase="webapps" autoDeploy="true" deployXML="false"
        name="localhost" unpackWARs="true">
        <Context docBase="../../webApplicationName"
            path="/webApplicationName" reloadable="true" />
        <Valve className="org.apache.catalina.valves.AccessLogValve"
            directory="logs"
            prefix="localhost_access_log." suffix=".txt"
            pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
    

    以下是我在 pom.xml 中配置插件的方法

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
    
        <configuration> 
            <path>/</path>
            <serverXml>src/main/tomcatconf/server.xml</serverXml>
            <warDirectory>target/appName</warDirectory>
            <webapps> 
                <webapp> 
                    <groupId>com.abc</groupId> 
                    <artifactId>appName</artifactId> 
                    <version>7.0.1</version> 
                    <type>war</type>    
                </webapp> 
            </webapps> 
        </configuration>
    
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.5.5</version>
        </dependency>
    </plugin>
    

    我已将 server.xml 其他配置文件放入 src/main/tomcatconf 目录(插件的默认值),并将 context.xml 放入 META-INF dir并放入 src/main/tomcatconf . 该插件似乎从其中一个目录中获取 context.xml .

    希望这对你有用 .

  • 15

    我想你可以试试这个配置

    <project>
      ...
      <build>
        <finalName>servidor-identidades-webapp</finalName>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <version>1.1</version>
            <configuration>
              <server>myserver</server>
              <url>http://127.0.0.1:8080/manager</url>
              <path>/servidor-identidades-webapp</path>
              <warSourceDirectory>C:/Users/fulanis/workspace2/web/target/servidor-identidades-webapp.jar</warSourceDirectory>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    

    参考:https://wiki.base22.com/display/btg/How+to+create+a+Maven+web+app+and+deploy+to+Tomcat+-+fast

    希望这可以帮助 .

相关问题