2013-12-18 44 views
7

配置:
- Maven的:3.0.5
- Java的:1.6.0_45maven - > profile - >激活 - 所有條件都是必需的或只有一個?

說明:

比方說,我們有配置文件配置如下圖所示:

<profiles> 
    <profile> 
     <id>profile-1</id> 
     <activation> 
      <jdk>1.6</jdk> 
      <property> 
       <name>name</name> 
       <value>Hubert</value> 
      </property> 
     </activation> 
    </profile> 
    <profile> 
     <id>profile-2</id> 
     <activation> 
      <jdk>1.6</jdk> 
      <property> 
       <name>name</name> 
       <value>Wiktoria</value> 
      </property> 
     </activation> 
    </profile> 
</profiles> 

我們有兩個p rofiles:profile-1 and profile-2

檔案型材1當兩個要求得到滿足應該是積極的:
- JDK版本爲1.6
- 屬性具有價值休伯特

問:

讓我們來看看這個配置:

MVN -Dname =休伯特幫助:主動輪廓

結果我得到有兩個作用輪廓:型材1型材2
嗯...
檔案型材2不應該是積極的,因爲財產具有預期Wiktoria不同的值。

有人能解釋爲什麼這項工作是這樣的嗎?這是一種正常的行爲嗎?
謝謝。

回答

6

這裏的問題是,觸發條件的激活列表與OR連接。他們有一張provide multiple activation triggers的門票,但它仍然是開放的。 這意味着它匹配你的sdk規則,它是真實的,因此是活躍的。

<profile> 
    <id>profile-1</id> 
    <activation> <!-- true || true = true --> 
     <jdk>1.6</jdk> <!-- true --> 
     <property> <!-- true --> 
      <name>name</name> 
      <value>Hubert</value> 
     </property> 
    </activation> 
</profile> 
<profile> 
    <id>profile-2</id> 
    <activation> <!-- true || false = true --> 
     <jdk>1.6</jdk> <!-- true --> 
     <property> <!-- false --> 
      <name>name</name> 
      <value>Wiktoria</value> 
     </property> 
    </activation> 
</profile> 
+1

感謝Chasmo的回答。你是對的。乾杯。 – Hubert

+0

此問題(MNG-3328)現在位於:https://issues.apache.org/jira/browse/MNG-3328 – seanf

2

注:這只是一個suplement到Chasmo的正確答案。

有一本描述Maven的sonatype的書。在Sonatype book (section 5.3.1)部分,我們可以找到:

當滿足所有激活條件時激活配置文件。

這是不正確的。事實是,一個條件足以激活配置文件,這當然等於或邏輯條件。此行爲在Maven docs中描述:

激活發生在滿足一個或多個指定條件時。遇到第一個肯定結果時,處理停止並且該配置文件被標記爲活動。

這對我來說也不intiutive也不非常有用。但是,這是寫這個時候maven的工作原理。

有一個門票MNG-4565和聯合。這被標記爲Bug,但根據Maven doc它不是,所以這張票已經打開了近4年。 最有用的部分是這張票的最後評論Ronny Pscheidl。他的評論指向這個來源:and-activation-profile-selector。這會將默認的maven OR條件更改爲AND條件。測試。作品。但是,當然,如果你決定使用這個,你還有一件事要記住。

+1

感謝您的提示。 –

+2

MNG-4565已在3.2.2中修復。 – lpandzic

+0

MNG-4565現在在這裏:https://issues.apache.org/jira/browse/MNG-4565 – seanf

相關問題