I am using cargo to automate war deployment on Tomcat. However, i get a trouble: i can`t replace default tomcat files with my custom as my files are copied first and then get overwritten by default. I spent hours for resolving this problem but nothing works. Here is my 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>
and here is cargo using:
<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>
One of solution is here: Is it possible to supply Tomcat6's context.xml file via the Maven Cargo plugin?
My working configuration (with jdbc DataSource pool) looks like:
<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>