Maven在mutli-module项目属性扩展中构建配置文件

时间:2015-06-21 14:47:28

标签: java maven properties-file

我有一个多模块Maven项目。我的父POM有以下模块:

<module>common</module>
<module>ingest</module>
<module>package</module>

package模块使用maven-antrun-plugin处理构建可部署zip文件的所有方面。另外两个模块是核心应用程序代码所在的位置。在package中,我有各种配置文件,其中包含生产,登台和开发环境的配置设置。每个配置文件看起来像:

<profile>
    <id>prod</id>
     <properties>
          <oozie.url>http://oozie-server:11000/oozie</oozie.url>
          <stage.user>prod-stage</stage.user>
    </properties>
</profile>

这在父级别完美运行,运行:

mvn clean install -P prod

所有.properties文件都将各种属性扩展为Maven配置文件中的属性。

ingest模块中,一个类可能依赖于带有ingest模块的.properties文件。此属性文件的内容类似于:

stageUser=${stage.user}

运行ingest模块的测试时,属性不会扩展为构建配置文件中的属性,例如该属性仍为stageUser=${stage.user}而不是stageUser=prod-stage。这会导致测试失败。

我唯一的解决方法是添加所需的配置文件和属性,以使测试传递到ingest POM。这意味着我在packageingest模块的两个位置具有这些属性。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

父项属性的继承应该有效。确保在子模块中有parent声明:

<parent>
    <artifactId>parent</artifactId>
    <groupId>parentGroupId</groupId>
    <version>version</version>
</parent>