我目前正在将Java Web Project构建过程从Ant迁移到Maven。当前进程使用多个特定于环境的属性文件,这些文件在WAR文件生成期间根据提供给Ant的环境参数插入到主应用程序属性中。
我在Maven中无法轻易复制的功能之一是属性文件前缀,即:
<property name="some.env.file" value="someEnv.properties"/>
<property file="${some.env.file}" prefix="some.env"/>
这个文件的所有属性前缀为“some.env”,应用程序属性中的所有占位符都包含此前缀,即:
some.property=${some.env.propertyOne}
Maven提供pom.xml过滤器和过滤元素以允许替换属性,但我找不到一种方法来在文件中添加所有属性名称,并将环境特定的前缀设置为构建参数,这会强制我重复属性文件对于Maven构建过程。有没有办法在Maven中复制这个Ant的原始功能?
答案 0 :(得分:1)
我建议你使用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>