Maven有条件地复制资源

时间:2019-05-24 13:36:04

标签: maven

在我的Web应用程序中,我有一些.properties.xml文件,它们已经从我的resources目录中处理并复制到classes中。

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

我在pom.xml中定义了一个变量:

<stage>Development</stage>

现在,我想根据此变量复制一些资源。基本上:

  • 如果$stage == Development->复制 resources/logging-development.propertiesclasses/logging.properties
  • 如果$stage == Production->复制 resources/logging-production.propertiesclasses/logging.properties代替。

如何在我的pom.xml中达到目标?

(注意-如果可能,我正在寻找一种解决方案,该解决方案不需要修改我的IDE调用maven的方式,因此只需要修改pom.xml等)

注意:这些是从一种环境更改为另一种环境的唯一文件

1 个答案:

答案 0 :(得分:0)

多亏了注释中的指针,我才能够做到这一点。这很简单,但是有效。它只是将所需文件复制到正确的文件名,然后照常移动。不需要的文件将从移动中排除。我将我的解决方案留在这里,以防它可以帮助其他人:

<properties>
        <stage>Development</stage>
...
<plugin>
            <groupId>com.coderplus.maven.plugins</groupId>
            <artifactId>copy-rename-maven-plugin</artifactId>
            <version>1.0</version>
            <executions>
                <execution>
                    <id>copy-file</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <sourceFile>src/main/resources/logging-${stage}.properties</sourceFile>
                        <destinationFile>src/main/resources/logging.properties</destinationFile>
                    </configuration>
                </execution>
            </executions>
</plugin>
....
<resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>logging-Development.properties</exclude>
                <exclude>logging-Production.properties</exclude>
            </excludes>
        </resource>
....