내 컴퓨터에는 두 개의 Java 버전이 설치되어 있습니다 (1.6 및 1.7은 수동으로 설치). 다른 프로젝트에는 둘 다 필요합니다. 그러나 Maven의 경우 1.7이 필요합니다. 이제 Maven은 1,6 Java 버전을 사용합니다. 어떻게 Maven을 1.7로 사용하도록 설정할 수 있습니까?
답변
Maven은 JAVA_HOME
매개 변수를 사용하여 실행할 Java 버전을 찾습니다. 귀하의 의견으로는 구성에서 변경할 수 없다는 것을 알았습니다.
JAVA_HOME
maven을 시작하기 직전에 매개 변수 를 설정할 수 있습니다 (필요한 경우 나중에 다시 변경할 수 있음).- 당신은 또한 당신에 갈 수
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.5
와 JDK 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 쉘로 전환하십시오.