如何使用 Maven-Cargo 替换 Tomcat 端口?
How Do I Replace The Tomcat Port Using Maven-Cargo?
我正在使用 maven cargo 插件下载 tomcat 作为我构建的一部分,并将我的 war 放在正确的位置。
然后我使用 maven 程序集将其压缩并在服务器上全部解压。
现在我想使用 xmlReplacements.
更改 tomcat conf/server.xml 中的端口号
这是我正在做的一个例子,但是如果你 运行 你会看到目标目录中的 server.xml 仍然是 8080。
我唯一的选择是在项目中保留 server.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.Whosebug</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>
我的问题有两个。我有错误的家和错误的阶段。简短的回答是我改成了这个:
<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-base 目录用于 home
。当我改变它时(而不是指向货物安装)它终于成功了!
不过,我要注意的是以上的端口是不同的server.xml。其他一些属性的格式和顺序也不同。
如果您想更改 Tomcat 上的端口,您可以在配置属性中使用 cargo.servlet.port 属性,可以设置的所有可能属性的列表是 here。
可以找到如何设置配置属性的示例 here.
我正在使用 maven cargo 插件下载 tomcat 作为我构建的一部分,并将我的 war 放在正确的位置。 然后我使用 maven 程序集将其压缩并在服务器上全部解压。
现在我想使用 xmlReplacements.
更改 tomcat conf/server.xml 中的端口号这是我正在做的一个例子,但是如果你 运行 你会看到目标目录中的 server.xml 仍然是 8080。
我唯一的选择是在项目中保留 server.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.Whosebug</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>
我的问题有两个。我有错误的家和错误的阶段。简短的回答是我改成了这个:
<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-base 目录用于 home
。当我改变它时(而不是指向货物安装)它终于成功了!
不过,我要注意的是以上的端口是不同的server.xml。其他一些属性的格式和顺序也不同。
如果您想更改 Tomcat 上的端口,您可以在配置属性中使用 cargo.servlet.port 属性,可以设置的所有可能属性的列表是 here。 可以找到如何设置配置属性的示例 here.