You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在互不继承的平行Maven POM中引用自定义属性?

平行Maven POM间共享自定义属性的实现方法

直接通过${pom1.artifact.id-the.property}这种方式引用另一个平行POM的自定义属性是做不到的——Maven原生属性机制仅支持继承链内的属性传递,或者通过额外配置实现跨平行POM的属性共享。下面是几种可行的方案:

方案1:抽离到公共属性文件

把需要共享的属性单独放在一个.properties文件中(比如项目根目录下的shared.properties),内容如下:

the.property=This is the property

然后在两个平行POM中都通过properties-maven-plugin加载这个文件:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>properties-maven-plugin</artifactId>
            <version>1.0.0</version>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>read-project-properties</goal>
                    </goals>
                    <configuration>
                        <!-- 根据实际路径调整 -->
                        <files>
                            <file>../shared.properties</file>
                        </files>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

配置完成后,两个POM都能直接使用${the.property}引用属性值。

方案2:调整结构使用父POM继承

如果允许调整项目结构,创建一个作为父级的POM,让两个平行POM都继承它:
父POM中定义共享属性:

<properties>
    <the.property>This is the property</the.property>
</properties>

在两个平行POM中添加继承配置:

<parent>
    <groupId>你的项目组ID</groupId>
    <artifactId>parent-pom</artifactId>
    <version>1.0.0</version>
</parent>

这是Maven原生支持的属性共享方式,配置简单且易于维护。

方案3:依赖属性传递(仅适用于存在依赖关系的场景)

如果两个项目存在依赖关系(比如POM A是POM B的依赖),可以通过依赖的属性传递机制共享:

  1. 在属性定义的POM中确保属性已在<properties>中声明
  2. 在引用的POM中通过${your.group.id:your.artifact.id:the.property}的方式引用
    不过这种方式对自定义属性的支持有限,通常更适合传递内置依赖属性,优先级不如前两种方案。

内容的提问来源于stack exchange,提问作者Szdnez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:37:29