[maven] 특정 Java 버전을 Maven으로 설정하는 방법

내 컴퓨터에는 두 개의 Java 버전이 설치되어 있습니다 (1.6 및 1.7은 수동으로 설치). 다른 프로젝트에는 둘 다 필요합니다. 그러나 Maven의 경우 1.7이 필요합니다. 이제 Maven은 1,6 Java 버전을 사용합니다. 어떻게 Maven을 1.7로 사용하도록 설정할 수 있습니까?



답변

Maven은 JAVA_HOME매개 변수를 사용하여 실행할 Java 버전을 찾습니다. 귀하의 의견으로는 구성에서 변경할 수 없다는 것을 알았습니다.

  • JAVA_HOMEmaven을 시작하기 직전에 매개 변수 를 설정할 수 있습니다 (필요한 경우 나중에 다시 변경할 수 있음).
  • 당신은 또한 당신에 갈 수 mvn/ (비 창) mvn.bat/ mvn.cmd(창) 명시 적으로 거기 자바 버전을 설정합니다.

답변

POM에서 컴파일러 속성을 설정할 수 있습니다 (예 : 1.8).

<project>
...
 <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
...
</project>


답변

여러 Java 버전이 설치된 사용자를위한 솔루션 추가

우리는 큰 코드베이스를 가지고 있으며, 대부분은 Java로되어 있습니다. 내가 작업하는 대부분은 Java 1.7 또는 1.8로 작성되었습니다. JAVA_HOME정적 이므로 .bashrc다른 값으로 Maven을 실행하기 위해 별칭을 만들었습니다 .

alias mvn5="JAVA_HOME=/usr/local/java5 && mvn"
alias mvn6="JAVA_HOME=/usr/local/java6 && mvn"
alias mvn7="JAVA_HOME=/usr/local/java7 && mvn"
alias mvn8="JAVA_HOME=/usr/local/java8 && mvn"

이를 통해 프로젝트에 사용 된 JDK 버전에 관계없이 개발 시스템의 명령 줄에서 Maven을 실행할 수 있습니다.


답변

창에서

JAVA_HOME시스템 변수 내에서 변수 를 변경하지 않으려는 경우

mvn.bat파일을 편집하고 다음 과 같은 줄을 추가하십시오

set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre

@REM ==== START VALIDATION ====@Jonathan이 언급 한 것처럼 이 작업을 수행 할 수 있습니다

Mac에서 (& Linux?)

또는 JAVA_HOME내부에서 변수 를 변경하지 않으려는 경우~/.bashrc~/.bash_profile

java_home 도구를 사용하여 ~/.mavenrc파일을 작성 하고 재정의 할 수 있습니다.JAVA_HOME

export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`

위생 점검

다음 명령을 실행하여 모든 것이 제대로 작동하는지 확인할 수 있습니다. jdk 버전이 달라야합니다.

mvn -version

그때

java -version


답변

내 두 센트를 추가하고 명시 적으로 솔루션을 제공합니다.

내 Windows 시스템에 설치 둘의 JDK가 – JDK 1.5JDK 1.6.

내 기본값 (및 Windows 시스템 환경 변수 JAVA_HOME로 설정 ) 이로 설정되어 JDK 1.5있습니다.

그러나을 사용하여 빌드 해야하는 maven 프로젝트가 있습니다 (예 : JBehave Tutorial ‘s Etsy.com ) JDK 1.6.

이 시나리오의 솔루션 (작동했습니다!)은 @DanielBarbarian에서 설정하도록 제안했습니다 mvn.bat.

창의 배치 파일에 익숙하지 않은 사람들을 위해 기본적으로 set JAVA_HOME=<path_to_other_jdk>뒤에 줄을 추가 @REM ==== START VALIDATION ====했습니다 mvn.bat(예 🙂 %MAVEN_HOME%\bin\mvn.bat.

@REM ==== START VALIDATION ====
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\jre
if not "%JAVA_HOME%" == "" goto OkJHome


답변

최근에 Maven에서 7 년 동안 근무한 후 toolchains.xml에 대해 배웠습니다. Maven은 문서화되어 있으며 2.0.9부터 지원합니다- 툴체인 문서

따라서 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>

JDK Maven 실행에 관계없이 Maven이 프로젝트를 빌드하는 데 사용할 수있는 다른 JDK를 정의 할 수 있습니다. IDE의 프로젝트 레벨에서 JDK를 정의 할 때와 비슷합니다.


답변

문제에 대한 하나의 간단한 해결책-

JAVA_HOME = / usr / lib / jvm / java-6-sun / mvn 새로 설치

Mac에서는 다음과 같습니다.

JAVA_HOME = / 라이브러리 /Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/ mvn 새로 설치

추신 : 내가 찾은 특별한 경우는 위의 명령이 ‘fish’쉘에서 작동하지 않는다는 것입니다. 나는 또한 bash 쉘을 사용할 수 있었고 거기에서 잘 작동했다. ‘bash’명령을 사용하여 bash 쉘로 전환하십시오.