2016-03-02 70 views
2

我們正在爲僅使用Web服務的應用程序開發Maven原型。這個原型提供了三個配置文件,每個配置文件一個(dev,pre,pro)。Maven - 是否可以同時創建指定多個配置文件的項目?

的一點是,我們想提供,可能需要他們在未來的項目中ORM依賴包括任選具有的可能性(JPA,休眠)。我們雖然創建了一個包含這些依賴關係的額外配置文件。

當我們建立我們的項目,我們使用MVN包-Denvironment =開發。是否可以指定多個配置文件,例如:mvn package -Denvironment = dev,orm?

+0

您沒有通過-D指定配置文件,您可以通過-P指定配置文件,是的,您可以有多個配置文件-Pprofile1,profile2。在你的情況下,配置文件可能是通過屬性(-D)激活的,那麼你可以在同一屬性(仍然通過-D),兩個屬性(-Dprop1 -Dprop2)或通過-P明確地激活兩個配置文件 –

+0

Take看看[這](http://stackoverflow.com/questions/18152831/building-multiple-maven-profiles-for-a-single-jenkins-job),它可能會幫助你 – haihui

回答

3

是的,這是可能的。但似乎你首先對how profiles are activated感到困惑。

命令

mvn package -Denvironment=dev 

激活而無需進一步配置任何輪廓。在你的情況下,它的工作原理,因爲必須有在你的POM配置文件定義,是由系統屬性environment的存在與dev值激活。你的配置看起來像:

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>environment</name> 
     <value>dev</value> 
     </property> 
    </activation> 
    </profile> 
</profiles> 

這是使配置文件時,你通過系統屬性-Denvironment激活魔法。考慮到這一點,您可以使用相同的想法激活多個配置文件:聲明多個由存在系統屬性激活的<profile>元素。

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>myAwesomeProperty1</name> 
     <value>true</value> 
     </property> 
    </activation> 
    </profile> 
    <profile> 
    <activation> 
     <property> 
     <name>myAwesomeProperty2</name> 
     <value>true</value> 
     </property> 
    </activation> 
    </profile> 
</profiles> 

上面配置將激活兩個輪廓如果myAwesomeProperty1myAwesomeProperty2是系統屬性具有值true

不過在這個特殊情況下,你想要的是根據你的環境激活一個版本,所以基於-P命令行開關而不是系統屬性來激活這些配置文件也許是個好主意。

Introduction to Build Profiles

配置文件可以使用-P CLI選項中明確指定。

這個選項需要一個參數,這是一個逗號分隔的配置文件的ID列表使用。當指定了此選項時,在選項參數中指定的配置文件(一個或多個)將除了其通過它們的活化構型或settings.xml<activeProfiles>部分活化的任何配置文件被激活。

mvn groupId:artifactId:goal -P profile-1,profile-2 

有了這個解決方案,您可以調用Maven的多檔編號。也就是說,如果你在你的配置

<profiles> 
    <profile> 
    <id>profile-1</id> 
    <!-- rest of config --> 
    </profile> 
    <profile> 
    <id>profile-2</id> 
    <!-- rest of config --> 
    </profile> 
</profiles> 

以上調用將同時激活profile-1profile-2

相關問題