Как получить доступ к недвижимости под конкретным профилем в Maven - PullRequest
0 голосов
/ 03 июля 2018

У меня есть 2 файла pom - ParentPOM и ChildPOM. Я хочу получить доступ к property1 в ParentPOM в ChildPOM. Я знаю, что это можно сделать, сделав ParentPOM родительским для ChildPOM и используя $ {property1}. Но property1 определено в 2 профилях - транк и выпуск, и я всегда хочу получить значение property1, определенное в выпуске. Как я могу это сделать? т.е.: - в приведенном ниже примере я хочу, чтобы значение было 0.0.2, а не 0.0.1, когда я получаю доступ к свойству 1 в ChildPOM.

Примечание: Я не могу изменить 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 голосов
/ 03 июля 2018

Есть одно чистое решение, но все зависит от того, почему ... зачем вам это? Решение: удалить профиль выпуска из дочернего и выполнить Maven следующим образом: mvn <goal> -Prelease,!trunk, т.е. включить профиль выпуска и отключить профиль магистрали. Чтобы подтвердить это решение, запустите mvn help:evaluate -Dexpression=property1 -Prelease,!trunk

0 голосов
/ 03 июля 2018

Введите свойство "releaseProperty1" в родительском pom. Используйте это свойство как для определения «property1» в профиле «release», так и для случаев использования в дочернем pom.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...