如何使用maven将文件复制到tomcat webapp文件夹?
问题描述:
我想使用Maven
在/ target/tomcat6x/container/webapps中将资源文件从src/main/resources复制到Cargo
Tomcat
。如何使用maven将文件复制到tomcat webapp文件夹?
我试过使用maven-resources-plugin
但我没有任何成功。
我尝试这样做:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0.5</version>
<configuration>
<wait>false</wait>
<container>
<containerId>tomcat6x</containerId>
<zipUrlInstaller>
<url>
http://mirrors.enquira.co.uk/apache/tomcat/tomcat-6/v6.0.30/bin/apache-tomcat-6.0.30.zip
</url>
<installDir>${installDir}</installDir>
</zipUrlInstaller>
<output>
${project.build.directory}/tomcat6x.log
</output>
<log>${project.build.directory}/cargo.log</log>
</container>
<configuration>
<files>
<copy>
<file>src/main/resources/datasource.properties</file>
<!--tofile>${project.build.directory}/tomcat6x/container/webapps/datasource.properties</tofile-->
<todir>${project.build.directory}/tomcat6x/container/webapps</todir>
</copy>
</files>
<home>
${project.build.directory}/tomcat6x/container
</home>
<properties>
<cargo.logging>high</cargo.logging>
<cargo.servlet.port>8081</cargo.servlet.port>
</properties>
</configuration>
</configuration>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>configure</goal>
<goal>start</goal>
<goal>deploy</goal>
</goals>
<configuration>
<deployer>
<deployables>
<deployable>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<type>war</type>
<pingURL>http://localhost:8081/charmweb-0.0.1-SNAPSHOT/</pingURL>
<pingTimeout>180000</pingTimeout>
<properties>
<context>charmweb-0.0.1-SNAPSHOT</context>
</properties>
</deployable>
</deployables>
</deployer>
</configuration>
</execution>
<execution>
<id>stop-container</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
...但该文件没有在服务器启动前先复制和应用程序被ping通。
有谁知道如何正确使用它?
答
您可以使用maven-antrun-插件,这和执行Ant复制任务:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy file="src/main/resources/fileToCopy"
tofile="${project.build.directory}/tomcat6x/container/webapps/fileToCopy" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
答
确定这里是:答案
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0.5</version>
<configuration>
<wait>false</wait>
<container>
<containerId>tomcat6x</containerId>
<zipUrlInstaller>
<url>
http://mirrors.enquira.co.uk/apache/tomcat/tomcat-6/v6.0.30/bin/apache-tomcat-6.0.30.zip
</url>
<installDir>${installDir}</installDir>
</zipUrlInstaller>
<output>
${project.build.directory}/tomcat6x.log
</output>
<log>${project.build.directory}/cargo.log</log>
</container>
<configuration>
<home>
${project.build.directory}/tomcat6x/container
</home>
<properties>
<cargo.logging>high</cargo.logging>
<cargo.servlet.port>8081</cargo.servlet.port>
</properties>
<files>
<copy>
<file>${project.basedir}/src/main/resources/datasource.properties</file>
<todir>webapps</todir>
<configfile>true</configfile>
<overwrite>true</overwrite>
</copy>
</files>
</configuration>
</configuration>
感谢@K。 Claszen因为会用Maven货物,如果Maven货物的目录里有任何东西,它会删除它。所以最好使用Maven货物插件并提及阶段。但我不知道如何。 – Ikthiander 2011-02-03 12:39:23