2015-08-28 70 views
0

我正在使用maven货物插件下载tomcat作为我的构建的一部分,并把我的战争放在正确的地方。 然后,我使用maven程序集将其压缩并将其全部提取到服务器上。如何使用Maven-Cargo替换Tomcat端口?

现在我想用xmlReplacements更改tomcat conf/server.xml中的端口号。

这是我在做什么的例子,但如果你运行它,你会看到,在目标目录在server.xml还称8080

是我保持服务器的修改后的副本的唯一选择.xml在项目中,并用它替换整个文件?或者我没有正确使用此功能?还是它坏了?

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.stackoverflow</groupId> 
    <artifactId>question</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <properties> 
    <tomcat.version>8.0.24</tomcat.version> 
    </properties> 

    <build> 
    <plugins> 
     <!--Create a war--> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.6</version> 
     <!--This is an empty demo project--> 
     <configuration> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
     <!--Create the Tomcat bundle with our war in it--> 
     <plugin> 
     <groupId>org.codehaus.cargo</groupId> 
     <artifactId>cargo-maven2-plugin</artifactId> 
     <version>1.4.15</version> 
     <configuration> 
      <container> 
      <!--containerId must be equal to one of the containers supported by Cargo --> 
      <!--https://codehaus-cargo.github.io/cargo/Container.html--> 
      <containerId>tomcat8x</containerId> 
      <artifactInstaller> 
       <groupId>org.apache.tomcat</groupId> 
       <artifactId>tomcat</artifactId> 
       <version>${tomcat.version}</version> 
      </artifactInstaller> 
      </container> 
      <configuration> 
      <type>standalone</type> 
      <home>${project.build.directory}/cargo/installs/tomcat-${tomcat.version}/apache-tomcat-${tomcat.version} 
      </home> 
      <!--Allegedly change the port number--> 
      <xmlReplacements> 
       <xmlReplacement> 
       <file>conf/server.xml</file> 
       <xpathExpression>/Server/Service/Connector[1]</xpathExpression> 
       <attributeName>port</attributeName> 
       <value>9090</value> 
       </xmlReplacement> 
      </xmlReplacements> 
      </configuration> 
      <deployables> 
      <deployable> 
       <groupId>${project.groupId}</groupId> 
       <artifactId>${project.artifactId}</artifactId> 
       <type>war</type> 
      </deployable> 
      </deployables> 
     </configuration> 
     <executions> 
      <execution> 
      <id>cargo-deploy</id> 
      <phase>package</phase> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

回答

0

我的问题是双重的。我有错误的家庭和错误的阶段。简短的回答是我改变这样的:

  <configuration> 
      <type>standalone</type> 
      <home>${project.build.directory}/apache-tomcat-${tomcat.version}</home> 
      <!--Change the port number--> 
      <xmlReplacements> 
       <xmlReplacement> 
       <file>conf/server.xml</file> 
       <xpathExpression>/Server/Service/Connector[1]</xpathExpression> 
       <attributeName>port</attributeName> 
       <value>9090</value> 
       </xmlReplacement> 
      </xmlReplacements> 
      </configuration> 


     </configuration> 
     <executions> 
      <execution> 
      <id>cargo-deploy</id> 
      <phase>package</phase> 
      <goals> 
       <goal>configure</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

详细信息:我克隆的源看samples当时效力现货的差异。

当我改变了执行从deploy相到configure相位它抱怨这样结合:

[ERROR] Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.4.15:configure (cargo-deploy) on project question: Execution cargo-deploy of goal org.codehaus.cargo:cargo-maven2-plugin:1.4.15:configure failed: Failed to create a Tomcat 8.x standalone configuration: Invalid configuration dir [C:\Question\target/cargo/installs/tomcat-8.0.24/apache-tomcat-8.0.24]. When using standalone configurations, the configuration dir must point to an empty directory. Note that everything in that dir will get deleted by Cargo. -> [Help 1] 
[ERROR] 

然后,我注意到,样品具有Tomcat的基dir来home。当我改变它(而不是指向货物安装)时,它终于奏效了!

但是,我应该注意,server.xml中的端口不同。一些其他属性的格式和顺序也不同。

1

如果要更改Tomcat上的端口,可以在配置属性中使用cargo.servlet.port属性,可以设置的所有可能属性的列表为here。 如何设置配置属性的示例可以找到here