2010-07-12 17 views
1

我需要兩個版本的Java ie。 Java5和Java6在同一臺機器上,因爲我的一些項目支持Java6,一些支持Java5。所以我通過將Java6的路徑放在JAVA_HOME和JAVA5中的JAVA5_HOME中來實現它。我在PATH變量中添加了兩個JAVA_HOME。使用兩個版本的Java配置Maven

但是當我做Java的版本,則默認情況下我得到以下結果

java version "1.6.0" Java(TM) SE Runtime Environment (build 1.6.0-b105) Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)

是否有可能得到了Java5也隨之的Java6?

另外我想知道,是否有可能配置兩個版本的Java(Java1.6 & Java1.5)maven2,並使用所需的版本在運行時構建項目?

回答

1

所以我通過將Java6的路徑放在JAVA_HOME和JAVA5中的JAVA5_HOME中。我在PATH變量中添加了兩個JAVA_HOME。

不是一個好主意(並且其中一個將首先在路徑上)。您只應添加JAVA_HOME,並將其指向您要使用的JDK(並打開需求)。

此外,我想知道,是有可能配置與Java(Java1.6 & Java1.5的)的兩個版本的Maven2並使用所需的版本在運行時生成的項目?

編號Maven使用JAVA_HOME,一次只能使用一個JDK。

如果要使用2個不同的JDK構建相同的項目,最好的選擇是使用像Hudson這樣的CI引擎並設置構建矩陣。

+0

我將mvn.bat中的JAVA_HOME更改爲JAVA5_HOME,並使用Java5構建項目。 我想知道是否有任何設置,我們可以提供JAVA_HOME和JAVA5_HOME,並在運行時或通過任何其他方式選擇編譯器? – deejay 2010-07-13 11:02:19

+0

@ deejay08:正如我寫的,沒有。而且我沒有看到修改'mvn.bat'的意思。更改'JAVA_HOME'環境變量,而不是根據'JAVA_HOME'修改所有腳本。 – 2010-07-13 11:46:34

2

實現此目的的一種方法記錄在maven-compiler-plugin site

個人而言,我會首先嚐試使用編譯的魔力(documented here)的sourcetarget參數,因爲這將讓你的目標1.5和1.6,而無需切換到另一個Java編譯器。

+0

更改編譯器級別!=使用另一個JDK(並且不會阻止您使用以前版本中不存在的類)。 – 2010-07-12 09:33:17

+0

更改編譯器 - 是的,正如帕斯卡爾所說。但帶有配置文件的編譯器插件是一個不錯的選擇。 – 2014-07-25 16:35:44

0

我剛剛在與Maven共事了七年之後,瞭解了toolchains.xml。 Maven有更從2.0.9 toolchains documentation

記錄,並支持它,所以我增加了一個toolchain.xml文件到我的〜/ .m2目錄/文件夾下面的內容:

<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd"> 
<!-- JDK toolchains --> 
<toolchain> 
    <type>jdk</type> 
    <provides> 
    <version>1.8</version> 
    <vendor>sun</vendor> 
    </provides> 
    <configuration> 
    <jdkHome>/opt/java8</jdkHome> 
    </configuration> 
</toolchain> 
<toolchain> 
    <type>jdk</type> 
    <provides> 
    <version>1.7</version> 
    <vendor>sun</vendor> 
    </provides> 
    <configuration> 
    <jdkHome>/opt/java7</jdkHome> 
    </configuration> 
</toolchain> 
</toolchains> 

它允許你定義什麼Maven可以使用不同的JDK來構建項目,而不管運行的JDK Maven如何。有點像在IDE中的項目級定義JDK時。

相關問題