2015-06-16 50 views
0

Maven的文檔明確建議分類爲多個JDK支持的解決方案:多JDK的Maven構建使用分類

的分類可以區分同一POM都建立了,但它們的內容不同的工件。它是一些可選的和任意的字符串,如果存在的話,會附加到版本號後面的工件名稱。作爲這個元素的動機,考慮一個項目,該項目提供了一個針對JRE 1.5的工件,但同時也是一個仍然支持JRE 1.4的工件。第一個神器可以裝備分類器jdk15,第二個裝備有jdk14,這樣客戶可以選擇使用哪一個。

我從來沒有見過這樣的工作示例。這個文檔是錯誤的嗎?或者是否有可能讓Maven使用不同的JDK多次構建相同的工件(並且明顯不同的源代碼目錄,因爲它們將具有不同的語法(例如鑽石或lambda)),最重要的是部署它們一起?

似乎這種事情對於JEP 238的潛在支持也是一個基本要求。

回答

1

該文檔沒有錯。它只是舉例說明如何應用分類器,在這種情況下,通過定位幾個JRE。

要做到這一點,可能有幾種方法可以做到這一點。有關相關問題,請參閱How to configure Maven to build two versions of an artifact, each one for a different target JRE。你也可以用Maven配置文件觸發不同的執行。在這種情況下,每個配置文件觸發maven-jar-plugin的不同配置有不同的分類:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>jar</goal> 
     </goals> 
     <configuration> 
      <classifier>jdk14</classifier> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

使用多個配置文件,就必須多週期執行,不是嗎?那麼你將如何將它們部署在一起呢? – Grod

+0

由於不同構建系統上的JDK位置不同,我還使用工具鏈插件,並且我知道無法爲單個插件執行定義工具鏈。 – Grod

+0

@Gordon AFAIK您需要運行多個配置文件才能部署多個工件。我從來沒有使用過工具鏈插件... – manouti