什么是Ant的<property>“prefix”属性的Maven的对应物?</property>

时间:2013-03-29 10:56:22

标签: java maven web-applications ant

我目前正在将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的原始功能?

1 个答案:

答案 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>