我们在ant中有一个非常老的项目,正在将其转换为maven。在旧项目中,我们确实有etc文件夹,该文件夹具有一些属性和一些其他部署所需的文件。我的要求是从etc文件夹复制基于不同配置文件的所有必需文件,但WEB-INF-> classes文件夹不应包含etc文件夹。我们项目的pom.xml(不是整个粘贴)在下面,但是没有删除etc文件夹:
<groupId>com.text.cm</groupId>
<artifactId>cm-ws</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<build.profile.id></build.profile.id>
<build.profile.properties.id></build.profile.properties.id>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<build.profile.id>-prod</build.profile.id>
<build.profile.properties.id>_prod</build.profile.properties.id>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<id>default-copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>
${project.build.directory}/${project.artifactId}-${project.version}/
</outputDirectory>
<resources>
<resource>
<directory>/src/main/resources/etc</directory>
<includes>
<include>**/web.xml</include>
<include>**/cm-servlet.xml</include>
<include>**/jboss-web.xml</include>
</includes>
<excludes>
<exclude>etc/**</exclude>
</excludes>
</resource>
<resource>
<directory>
../text-cm-jboss/src/main/resources/datasources
</directory>
<includes>
<include>cm-db2-ds${build.profile.id}.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>
${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/classes/properties
</outputDirectory>
<resources>
<resource>
<directory>/src/main/resources/etc/properties/</directory>
<includes>
<include>
environment${build.profile.properties.id}.properties
</include>
<include>
cm.properties
</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-resources-2</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>
${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/classes/xml
</outputDirectory>
<resources>
<resource>
<directory>/src/main/resources/etc/xml/</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>generate-resources</id>
<phase>install</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>
${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/classes
</outputDirectory>
<resources>
<resource>
<directory>/src/main/resources/</directory>
<excludes>
<exclude>etc/**</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
正在复制etc目录,因为它位于默认资源目录下。
您正在根据需要使用目标copy-resources
复制资源,这很棒。但是默认的resources
目标也会同时自动执行,这就是为什么您在类下看到etc文件夹的原因。
在这种情况下,我要做的一件事是从默认资源目录中排除所有目录和文件,以便每当自动运行resources
目标时,都不会复制任何内容。
例如,
<project>
...
<build>
...
<resources>
<resource>
<directory>src/resources</directory>
<excludes>
<exclude>**</exclude>
</excludes>
</resource>
...
</resources>
...
</build>
...
</project>