2016-10-17 232 views
3

我正在尋找一種方法來設置多個配置文件,其中我想要設置爲默認(運行只是mvn clean install應該選擇該配置文件)。我對任何使用activeByDefault的解決方案都不感興趣,因爲它阻止我在另一個模塊中創建單獨的配置文件,並在默認配置文件的同時使用它們。maven配置文件激活與默認配置文件沒有標籤「activeByDefault」

目前我使用的財產的做法,看起來是這樣的:

<profiles> 
    <profile> 
     <id>prof1</id> 
     <activation> 
      <property> 
       <name>!myprop</name> 
      </property> 
     </activation> 
    </profile> 
    <profile> 
     <id>prof2</id> 
     <activation> 
      <property> 
       <name>myprop</name> 
       <value>prof2</value> 
      </property> 
     </activation> 
    </profile> 
    <profile> 
     <id>prof3</id> 
      <activation> 
      <property> 
       <name>myprop</name> 
       <value>prof3</value> 
      </property> 
     </activation> 
     </profile> 
</profiles> 

這意味着我必須編譯我的項目,mvn clean install -Dmyprop=prof3如果我要選擇prof3而不是小弟弟震(這是默認通過不設置任何財產)。

但是我想達到同樣的效果,但用-Pprofilename編譯我的項目,而不是設置屬性。我試圖在<properties>標籤下的每個配置文件中添加屬性,但似乎默認總是運行。我讀了pom屬性不可用於激活配置文件。

有沒有解決這個問題的方法?比如有一個設置或屬性文件(我不想每次編譯時都改變它),從中我可以獲得該屬性並實現使用-PprofileName進行編譯的目標?

回答

1

documentation通過@Jens聯解釋了5種方法來觸發配置文件。我不相信除activeByDefault之外,任何組合都會給你「想要的其他或默認」觸發。

沒有看到其他的poms可以解釋你爲什麼不能使用使用activeByDefault這很難幫助你找到完全基於maven的解決方案。也許簡化你的構建簡介結構?

另一種方法是創建一個別名叫做mvndmvn,做mvn -Pprof1默認的Maven,然後使用mvn,每當你想prof23

0

項目特定命令行設置

我沒有完成知道這是否有助於解決您的問題,但由於Maven的3.3.1,一個附加的方式退出配置項目。

在項目的基本目錄創建一個名爲.mvn目錄,並將命名它maven.config與此內容的文件:
-Pprof1

如果執行mvn clean install,輪廓prof1將被使用。如果您輸入mvn clean install -Pprof3,則構建將使用配置文件prof3執行。

參見:
Maven 3.3.1 release notes

Maven 3.3.9 release notes

相關問題