Добавление зависимостей в субмодуль Maven при активации профиля - PullRequest
1 голос
/ 24 января 2011

У меня есть проект с родительским pom.xml, который определяет профили, и debug профиль:

<profile>
    <id>debug-true</id>
    <activation>
        <property>
            <name>debug</name>
            <value>true</value>
        </property>
    </activation>
</profile>

Я хочу, чтобы один из моих подмодулей добавил зависимость jboss-seam-debug, когдапрофиль debug активирован.

Я написал это для детей pom.xml:

<profiles>
    <profile>
        <id>debug-true</id>
        <dependencies>
            <dependency>
                <groupId>org.jboss.seam</groupId>
                <artifactId>jboss-seam-debug</artifactId>
            </dependency>
        </dependencies>
    </profile>
</profiles>

Но это не работает, эта зависимость не является частью дерева зависимостей, когда я задаю -Ddebug=true ... это как children pom.xml переопределяет мой профиль debug ...

Знаете ли вы, как я могу добавить зависимость jboss-seam-debug к моему подмодулю, когда свойство debug имеет значение true?


Собственно, вот моя полная потребность, которая немного сложнее.

Вот мой родитель pom.xml:

<profiles>
    <profile>
        <id>env-dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <property>
                <name>env</name>
                <value>dev</value>
            </property>
        </activation>
        <properties>
            <debug>true</debug>
    ... other properties ...
        </properties>
    </profile>
    ...

Обычно я просто передаю -Denv=dev в командной строке mvn и хочу, чтобы мой субмодуль активировал jboss-seam-debug только тогда, когда свойство debug определено для true, поэтому япишет, что в подмодуле pom.xml:

<profiles>
    <profile>
        <id>debug-true</id>
        <activation>
            <property>
                <name>debug</name>
                <value>true</value>
            </property>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.jboss.seam</groupId>
                <artifactId>jboss-seam-debug</artifactId>
            </dependency>
        </dependencies>
    </profile>
    ...

, которая не работала только при передаче -Denv=dev, потому что я не передаю систему property -Ddebug=true, это свойство maven , которое активируется моим родителем pom.xml, и что мои дети не "видят" ...

1 Ответ

1 голос
/ 02 февраля 2011

это потому что профили не наследуются в maven.Это означает, что debug-true в дочернем POM не наследует активацию профиля в родительском POM, также называемом debug-true.

. У вас есть две возможности решить эту проблему:

1) call mvn -Pdebug-trueкоторый вызовет базовый профиль в каждом POM

2) добавить код активации в каждый POM

Лично я бы предпочел первое решение.

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