我正在使用 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 文件包含两个属性,例如对于开发环境:
已定义两个配置文件默认和 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>