Maven: запускать профиль нужно только при сборке на родительском ПОМ - PullRequest
1 голос
/ 12 сентября 2011

Я использую Maven 3.0.3.У меня есть проект, который наследуется от родителя…

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myco.util.ant</groupId>
    <artifactId>selenium-framework</artifactId>
    <packaging>jar</packaging>
    <name>Myco Selenium Utils</name>
    <parent>
            <groupId>com.nna</groupId>
            <artifactId>parent</artifactId>
            <version>1.2-SNAPSHOT</version>
            <relativePath>../parent</relativePath>
    </parent>

В моем родительском поме у меня есть профиль ниже.Однако я хочу, чтобы этот профиль был активным только в том случае, если кто-то выполняет сборку для родительского pom, а не для одного из его дочерних элементов.Кто-нибудь знает, как я могу настроить ниже, чтобы он не был активирован, если кто-то делает сборку дочернего проекта?

            <profile>
                    <id>deploy-snapshot</id>
                    <build>
                            <plugins>
                                    <plugin>
                                            <artifactId>maven-antrun-plugin</artifactId>
                                            <version>1.6</version>
                                            <executions>
                                                    <execution>
                                                            <phase>deploy</phase>
                                                            <configuration>
                                                                    <target>
                                                                            <condition property="is-release">
                                                                                    <not>
                                                                                            <contains string="${project.version}" substring="SNAPSHOT" />
                                                                                    </not>
                                                                            </condition>
                                                                            <fail if="is-release" message="You can only deploy snapshot versions of this project." />
                                                                    </target>
                                                            </configuration>
                                                            <goals>
                                                                    <goal>run</goal>
                                                            </goals>
                                                    </execution>
                                            </executions>
                                    </plugin>
                            </plugins>
                    </build>
                    <activation>
                            <activeByDefault>true</activeByDefault>
                    </activation>
            </profile>

Спасибо, - Дейв

Ответы [ 2 ]

0 голосов
/ 15 января 2014

У меня была похожая ситуация, я хотел запустить профиль в подпроекте по умолчанию, но не при сборке с верхнего уровня, и в то же время дать возможность запустить его и из верхнего проекта.

Я использовал для этого свойство user.dir в сочетании с указанием Райана.

в интеграция POM проекта:

    <profile>
        <id>continuous-integration</id>
        <!-- Two ways of activating this profile -->
        <activation>
            <!-- Run the build from the top with param -DfullTest -->
            <property>
                <name>fullTest</name>
            </property>
            <!-- Run the build from the integration directory -->
            <file>
                <missing>${user.dir}/integration</missing>
            </file>
        </activation>
    ...
    <profile>

Если необходимо отключить, просто замените <missing/> на <exists/>.

0 голосов
/ 12 сентября 2011

Вы можете попробовать активировать его при наличии / отсутствии файла или каталога.Вы можете найти пример в книге Sonatype Maven .Обратите внимание, что существует разница между «текущим рабочим каталогом» и «${project.basedir}», и различия немного отличаются между Maven 2 и Maven 3, если это важно для вас.

...