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

时间:2014-04-16 06:44:26

标签: java maven tomcat

我只想运行一个使用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,但问题是&gt; 未部署Web应用程序工件(运行tomcat7时不会自动部署:运行)。看起来插件没有检测到工件,只是启动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 manager手动添加war文件?

3 个答案:

答案 0 :(得分:15)

<serverXml>代表<Context>

  

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

我认为这意味着你必须在<Host>元素中插入一个带有战争路径的<Host appBase="webapps" autoDeploy="true" deployXML="false" name="localhost" unpackWARs="true"> <Context docBase="../../webapp" path="/webapp" reloadable="true" /> </Host> 元素,如下所示:

appBase

“webapp”是我生成的战争名称。显然,target/tomcatdocBase相关(并且“webapps”似乎是默认值)。 appBase<Context>相关,所以为了简单起见,我使用了构建目录的相对路径。

这对我有用,如果没有docBase元素,我会得到一个白页。

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

答案 1 :(得分:4)

我已将以下内容添加到 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目录并放入src/main/tomcatconf 。该插件似乎从其中一个目录中获取context.xml

希望这适合你。

答案 2 :(得分:0)

我认为你可以试试这个配置

<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

希望这有帮助。