Maven 在多模块项目中构建配置文件 属性 展开

Maven build profiles in a mutli-module project property expansion

我有一个多模块 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 模块中,一个 class 可能依赖于带有 ingest 模块的 .properties 文件。此属性文件的内容类似于:

stageUser=${stage.user}

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

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

从父级继承属性应该可行。确保在子模块中有 parent 声明:

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