如何在Maven中访问特定配置文件下的属性

时间:2018-07-03 12:56:32

标签: maven

我有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>

2 个答案:

答案 0 :(得分:0)

在父pom中引入属性“ releaseProperty1”。将此属性用于配置文件“版本”中“ property1”的定义以及子pom中的用例。

答案 1 :(得分:0)

有一个干净的解决方案,但这全都取决于为什么...为什么要这么做? 解决方案是:从子级中删除发布配置文件,然后像这样执行Maven:mvn <goal> -Prelease,!trunk,即启用发布配置文件并禁用中继配置文件。 要确认此解决方案,请运行mvn help:evaluate -Dexpression=property1 -Prelease,!trunk