我目前正在将Java Web项目的构建过程从Ant迁移到Maven。当前进程使用几个特定于环境的属性文件,这些文件根据提供给Ant的环境参数,在WAR文件生成期间插入到主应用程序属性中。
我在Maven中不容易复制的功能之一是属性文件前缀,即:<property name="some.env.file" value="someEnv.properties"/>
<property file="${some.env.file}" prefix="some.env"/>
在文件的所有属性前加上"some "。,并且应用程序属性中的所有占位符都包含此前缀,即:
some.property=${some.env.propertyOne}
Maven提供了pom.xml过滤器和过滤元素,以允许属性替换,但是我无法找到一种方法,在一个文件中添加一个特定于环境的前缀作为构建参数,这迫使我为Maven构建过程复制属性文件。有没有办法在Maven中复制这个Ant的原始功能?
我建议您使用maven-antrun-plugin通过使用前缀的简单ant任务来加载属性文件。并且启用exportAntProperties
,使ant定义的属性在maven中可用。
在验证阶段(以及随后的所有阶段),这样做会使maven构建中所有由ant定义的属性可用。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<configuration>
<exportAntProperties>true</exportAntProperties>
<target>
<property file="${some.env.file}" prefix="some.env"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>