使用与配置文件相关的属性文件过滤maven属性

时间:2017-06-18 14:40:54

标签: maven-3 maven-plugin maven-resources-plugin

我正在使用 properties-maven-plugin 从自定义属性文件加载属性。属性文件名取决于所选的构建配置文件。

       <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>properties-maven-plugin</artifactId>
            <version>1.0.0</version>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>read-project-properties</goal>
                    </goals>
                    <configuration>
                        <files>
                            <file>src/main/vpn/vpn-${environment}.properties</file>
                        </files>
                    </configuration>
                </execution>
            </executions>
        </plugin>

每个 vpn - $ {environment} .properties 文件包含两个属性,例如对于开发环境:

  • vpn.username = dev_user
  • vpn.password = dev_password

已定义两个配置文件默认 dev

 <profiles>
    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>                
            <environment>default</environment>              
        </properties>
    </profile>
    <profile>
        <id>dev</id>
        <properties>                
            <environment>dev</environment>              
        </properties>
    </profile>
</profiles> 

我现在要做的是使用maven-resources-plugin将unix模板文件中使用的vpn属性占位符替换为相应活动配置文件的属性值,并将此文件复制到另一个位置。

    <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions> <execution>
                    <id>copy-script</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>src/main/vpn/bin</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${basedir}/unix-template</directory>
                                <filtering>true</filtering>
                                <includes>
                                    <include>customUnixTemplate</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>

customUnixTemplate 文件包含vpn-connect ${vpn.username} ${vpn.password}之类的内容。

在使用mvn clean install -Pdev构建项目并打开 src / main / vpn / bin 目录中的输出文件后,我可以看到一小段时间内属性是从正确的属性文件,即vpn-dev.properties,但文件被默认属性文件覆盖,我无法弄清楚原因。我怀疑它与插件执行的构建阶段/订单有关。有人可以帮忙吗?

编辑以回应Andrei的评论: maven资源插件使用第二次执行:

             <execution>
                    <id>copy-resources</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/${project.artifactId}/conf</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources</directory>
                                <filtering>true</filtering>
                                <includes>
                                    <include>log4j2.xml</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>

0 个答案:

没有答案