我正在使用 cargo 来自动化 Tomcat 上的 war 部署。但是,我遇到了麻烦:我无法用我的自定义替换默认的 tomcat 文件,因为我的文件首先被复制,然后默认被覆盖。我花了几个小时来解决这个问题,但没有任何效果。这是我的 pom.xml
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>replace-tomcat-users-xml</id>
<phase>process-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/apache-tomcat-${version.tomcat}/conf/</outputDirectory>
<resources>
<resource>
<directory>src/test/resources/</directory>
<includes>
<include>context.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>replace-tomcat-users-xml-cargo</id>
<phase>process-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/cargo/installs/tomcat-${version.tomcat}/apache-tomcat-${version.tomcat}</outputDirectory>
<resources>
<resource>
<directory>src/test/resources/</directory>
<includes>
<include>context.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
这里是 cargo 使用:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.4.11</version>
<configuration>
<skip>false</skip>
<container>
<containerId>tomcat7x</containerId>
<log>${project.build.directory}/cargo.log</log>
<artifactInstaller>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat</artifactId>
<version>${version.tomcat}</version>
<type>zip</type>
</artifactInstaller>
<systemProperties>
<tomcat.home.dir>
${basedir}/target/cargo/installs/apache-tomcat-${version.tomcat}/apache-tomcat-${version.tomcat}
</tomcat.home.dir>
<tomcat.server.home.dir>
${basedir}/target/cargo/installs/apache-tomcat-${version.tomcat}/apache-tomcat-${version.tomcat}
</tomcat.server.home.dir>
</systemProperties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</container>
<configuration>
<configfile>
<file>${basedir}/target/cargo/installs/context.xml</file>
<todir>conf/</todir>
<tofile>context.xml</tofile>
<configfile>true</configfile>
<overwrite>true</overwrite>
</configfile>
<properties>
<cargo.servlet.port>8080</cargo.servlet.port>
<!--Тут менять-->
<cargo.servlet.users>admin:admin:manager-script</cargo.servlet.users>
<cargo.jvmargs>
-Xmx1024m -XX:MaxPermSize=512m
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
-Xnoagent
-Djava.compiler=NONE
</cargo.jvmargs></properties>
</configuration>
最佳答案
解决方案之一在这里:Is it possible to supply Tomcat6's context.xml file via the Maven Cargo plugin?
我的工作配置(使用 jdbc 数据源池)如下所示:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.5.0</version>
<configuration>
<container>
<containerId>tomcat8x</containerId>
<systemProperties>
<file.encoding>UTF-8</file.encoding>
<spring.profiles.active>tomcat,datajpa</spring.profiles.active>
</systemProperties>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
</dependencies>
</container>
<configuration>
<configfiles>
<configfile>
<file>src/main/resources/tomcat/context.xml</file>
<todir>conf/Catalina/localhost/</todir>
<tofile>context.xml.default</tofile>
</configfile>
</configfiles>
</configuration>
<deployables>
<deployable>
<groupId>ru.javawebinar</groupId>
<artifactId>topjava</artifactId>
<type>war</type>
<properties>
<context>${project.build.finalName}</context>
</properties>
</deployable>
</deployables>
</configuration>
</plugin>
关于java - cargo 嵌入式tomcat : custom context. xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587299/