我有2个pom文件-ParentPOM和ChildPOM。我想访问ChildPOM中ParentPOM中的property1。我知道可以通过将ParentPOM设置为ChildPOM的父级并使用$ {property1}来实现。但是property1是在2个配置文件中定义的-主干和发布,我一直想获取在release中定义的property1的值。我怎么做?即:-在下面的示例中,当我访问ChildPOM中的property1时,我希望该值应为0.0.2而不是0.0.1。
注意:我无法修改ParentPOM
<project>
<modelVersion>x.x.x</modelVersion>
<artifactId>ParentPOM</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>ParentPOM</name>
<profiles>
<profile>
<id>trunk</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<property1>0.0.1</property1>
</properties>
</profile>
<profile>
<id>release</id>
<properties>
<property1>0.0.2</property1>
</properties>
</profile>
</profiles>
</project>
<project>
<modelVersion>x.x.x</modelVersion>
<parent>
<groupId>com.temp</groupId>
<artifactId>ParentPOM</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>ChildPOM</artifactId>
<version>2.0.0</version>
<packaging>pom</packaging>
<name>ChildPOM</name>
<profiles>
<profile>
<id>trunk</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<property1>x.x.x</property1>
</properties>
</profile>
<profile>
<id>release</id>
<properties>
<property1>y.y.y</property1>
</properties>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>xxx</artifactId>
<version>${property1}</version>
</dependency>
</dependencies>
</project>
答案 0 :(得分:0)
在父pom中引入属性“ releaseProperty1”。将此属性用于配置文件“版本”中“ property1”的定义以及子pom中的用例。
答案 1 :(得分:0)
有一个干净的解决方案,但这全都取决于为什么...为什么要这么做?
解决方案是:从子级中删除发布配置文件,然后像这样执行Maven:mvn <goal> -Prelease,!trunk
,即启用发布配置文件并禁用中继配置文件。
要确认此解决方案,请运行mvn help:evaluate -Dexpression=property1 -Prelease,!trunk