【问题标题】:Maven build profiles in a mutli-module project property expansionMaven 在多模块项目属性扩展中构建配置文件
【发布时间】:2015-09-07 01:38:57
【问题描述】:

我有一个多模块 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 模块的两个位置都有这些属性。有没有更好的解决方案?

【问题讨论】:

    标签: java maven properties-file


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢 manouti!我刚刚将配置文件部分移到父 POM 中并解决了问题
    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2011-09-03
    • 2017-09-21
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多