2011-12-07 18 views
1

我有一個Maven項目,我們希望構建兩個獨立的jar,一個包含32位庫,另一個包含64位庫。如何運行構建兩次,以便我可以使用不同的依賴關係獲取兩個工件?

根據運行構建的操作系統,我們當前的構建將生成32位或64位構件。

的我們如何目前成立了一個概述:

<properties> 
      <env.arch>${sun.arch.data.model}</env.arch> 
    </properties> 

    <build> 
    <pluginManagement> 

    <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>copy-native</id> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
        <artifactItems> 
        <artifactItem> 
         <groupId>artifact-for-${env.arch}</groupId> 
         <artifactId>artifact.name</artifactId> 
        </artifactItem> 
         ... 

        <plugin> 
         <artifactId>maven-jar-plugin</artifactId> 
         <executions> 
          <execution> 
           <phase>package</phase> 
          </execution> 
         </executions> 

所以它在做什麼是複製的${env.arch}符合我們的屬性值的依賴關係,然後建立使用maven-jar-plugin罐子。

我們需要做的是從一個構建中產生2個jar ......一個包含32位依賴關係,另一個包含64位依賴關係。

任何人都可以提供任何指導我們如何完成這件事?

感謝

回答

2

這可以通過指定像this answer在配置文件的依賴性來完成。您將不得不兩次構建您的項目以創建兩個工件。您應該也可以配置每個配置文件jar plugin以將不同的分類器分配給工件。

您也可以在配置文件中設置一個屬性,然後在依賴項部分使用它,而不是環境變量。

您也可以激活根據當前系統的體系結構型材,有一個工作默認情況下:

<profile> 
    <activation> 
     <os> 
      <arch>x86</arch> 
     </os> 
    </activation> 
    ... 
</profile> 

所有激活選項上this page描述。

+0

謝謝。我怎樣才能建立程序2x通過?通過調用maven兩次,比如通過「mvn compile -Dprofile1」後跟「mvn package -Dprofile2」? – Cuga

+0

是的,通過使用不同配置文件調用'mvn package'兩次。理想情況下,這可以通過構建服務器完成。 –

+0

謝謝!這是我們要做的 – Cuga

相關問題