2011-09-12 59 views
1

我正在使用Maven 3.0.3。我有一個項目,從父母繼承...Maven:只想運行配置文件,如果在父pom上構建的話

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

謝謝 - 戴夫

回答

0

你可以嘗試通過存在/不存在一個文件或目錄的激活它。你可以找到一個example in the Sonatype Maven book。請注意,「當前工作目錄」和「${project.basedir}」之間存在差異,如果這對您很重要,Maven 2和Maven 3之間的差異略有不同。

+0

感謝有關基於文件存在的配置文件激活的想法,但我的父項目只有一個pom.xml文件和目標目錄,不足以(僅基於這些文件)將其與子項目區分開來。任何其他想法? - – Dave

+1

@Dave。你總是可以將目錄(和/或文件)添加到「pom」項目中。 –

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/><exists/>

相關問題