Maven:只想在父pom上进行构建时运行配置文件

时间:2011-09-12 15:38:21

标签: maven-2 maven

我正在使用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中,我有以下个人资料。但是,如果有人在父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 :(得分:0)

您可以尝试通过文件或目录的存在/不存在来激活它。你可以找到一个example in the Sonatype Maven book。请注意,“当前工作目录”和“${project.basedir}”之间存在差异,Maven 2和Maven 3之间的差异略有不同,如果这对您很重要。

答案 1 :(得分:0)

我有类似的情况,我想在默认情况下在子项目中运行配置文件,但不是在从顶层构建时,同时也提供从顶层项目运行它的选项。

我使用user.dir属性来结合Ryan的参考。

集成项目的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/>的{​​{1}}。