2010-07-12 3 views
1

두 가지 버전의 Java가 필요합니다. 일부 프로젝트는 Java6을 지원하고 일부 프로젝트는 Java5를 지원하므로 Java5와 Java6을 같은 머신에 설치해야합니다. 그래서 JAVA_HOME에 Java6의 경로를 넣고 JAVA5_HOME에 Java5의 경로를 둡니다. PATH 변수에 JAVA_HOME을 둘 다 추가했습니다. 나는 자바 -version을 수행 할 때두 버전의 Java로 Maven 구성

, 그때 기본적으로 나는 다음과 같은 결과

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를 가리키게하고 (필요시 켜십시오). 또한

나는 그 알고 싶다, 그것은 자바 (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

+0

@ deejay08 : 내가 썼을 때, 아니. 그리고 나는'mvn.bat'을 수정할 점이 보이지 않습니다. 'JAVA_HOME'에 따라 모든 스크립트를 수정하는 대신'JAVA_HOME' 환경 변수를 변경하십시오. –

2

이 작업을 수행하는 한 가지 방법은 maven-compiler-plugin site에 설명되어 있습니다.

개인적으로 먼저 다른 Java 컴파일러로 전환하지 않고도 1.5와 1.6을 모두 타겟팅 할 수 있도록 컴파일 mojo (documented here)의 sourcetarget 매개 변수를 사용하려고합니다.

+0

컴파일러 레벨 변경!= 다른 JDK 사용 (그리고 이전 버전에는 존재하지 않는 클래스 사용을 막지 못함). –

+0

컴파일러 변경 - 예, 파스칼은 말했습니다. 그러나 프로필이있는 컴파일러 플러그인은 좋은 옵션입니다. –

0

저는 Maven을 사용하여 7 년이 지난 지금 toolchains.xml에 대해 배웠습니다. 그것은 수

<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> 

당신이 무엇을 정의 : 메이븐은 심지어 2.0.9 toolchains documentation

에서 문서화 및 지원하고있다 그래서 나는 다음과 같은 내용으로 내 ~/.m2/폴더에 toolchain.xml 파일을 추가 서로 다른 JDK Maven은 Maven을 실행하는 JDK와 관계없이 프로젝트를 빌드하는 데 사용할 수 있습니다. IDE에서 프로젝트 레벨에 JDK를 정의 할 때와 비슷합니다.

관련 문제