如何使用maven从WEB-INF classes文件夹中删除etc文件夹?

问题描述 投票:0回答:1

我们在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>
maven maven-3
1个回答
0
投票

正在复制etc目录,因为它位于默认资源目录下。

您正在根据需要使用目标copy-resources复制资源,这很棒。但是默认的resources目标也会同时自动执行,这就是为什么您在类下看到etc文件夹的原因。

在这种情况下,我要做的一件事是从默认资源目录中排除所有目录和文件,以便每当自动运行resources目标时,都不会复制任何内容。

例如,

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
      <directory>src/resources</directory>     
      <excludes>
          <exclude>**</exclude>
        </excludes>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>
© www.soinside.com 2019 - 2024. All rights reserved.