2014-12-29 43 views
0

我有以下情況:Maven的配置文件定義的屬性

parent.pom 
<profiles> 
    <profile> 
     <id>P1</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
      whatever 
     </build> 
    </profile> 
    <profile> 
     <id>P2</id> 
     <activation> 
      <property> 
       <name>prop1</name> 
      </property> 
     </activation> 
     <build> 
      whatever 
     </build> 
    </profile> 

有沒有,只有「MVN乾淨安裝」兒童激活曲線P2,而不需要像「MVN全新安裝指定配置文件的任何方式 - PP2「或」mvn clean install -Dprop1「或更改settings.xml?

prop1不是配置,或者它只是一個配置來激活配置文件P2。

我已經試過:

child.pom 
<properties> 
    <prop1>exists</prop1> 
</properties> 

但如我所料,由於http://maven.apache.org/guides/introduction/introduction-to-profiles.html

那麼,有沒有人做過或者需要類似的東西它不工作?

+0

你真的描述了無條件激活,在這種情況下,你應該爲配置文件'P2'設置''爲'true'(然後''配置文件'P1'和'P2'在默認情況下會被激活)。 – mystarrocks

+0

我可以有這種情況嗎? 2個配置文件默認是活動的 – mlecar

+0

和''和''旨在用作驅動激活的條件,通常用於'',儘管如同'Maven 2.0.9'一樣,這些可以被內插。支持的變量是像'$ {user.home}'這樣的系統屬性和像'$ {env.HOME}'這樣的環境變量。 – mystarrocks

回答

1

你在這裏描述的是真的想要無條件激活配置文件的情況。所以你應該可以通過<activeByDefault>來實現。

在你的情況,如果你設置的P2<activeByDefault>true,你會看到,無論是輪廓P1P2(以及任何這樣的配置文件)默認激活(是的,你可以激活許多profile是你想這樣)。您可以驗證此行爲是這樣的:

mvn help:active-profiles

慎用這種型材的警告,但:

此配置文件將自動生效所有構建除非 在同一POM另一種規範是使用之前描述的方法中的一個來激活。當POM中的配置文件在命令行或激活配置中被激活 時,所有默認激活的配置文件 都會自動停用。

<exists><missing>,他們真正的意思用於文件,儘管作爲Maven 2.0.9,這些標籤被允許進行插值。引述DOC,

這個例子將在所生成的文件 目標/生成來源/ axistools/WSDL2Java的/組織/阿帕奇/行家是 缺失觸發輪廓。

<profiles> 
    <profile> 
    <activation> 
     <file> 
     <missing>target/generated-sources/axistools/wsdl2java/org/apache/maven</missing> 
     </file> 
    </activation> 
    ... 
    </profile> 
</profiles> 

隨着Maven 2.0.9,標籤的,並且可以插值 。支持的變量是系統屬性,如 $ {user.home}和環境變量,如$ {env.HOME}。請注意0​​,在POM中定義的屬性和值本身不可用 進行插值。上面的示例激活器不能使用 $ {project.build.directory},但需要對路徑目標進行硬編碼。