내 컴퓨터에는 두 개의 Java 버전이 설치되어 있습니다 (1.6 및 1.7은 수동으로 설치). 다른 프로젝트에는 둘 다 필요합니다. 그러나 Maven의 경우 1.7이 필요합니다. 이제 Maven은 1,6 Java 버전을 사용합니다. 어떻게 Maven을 1.7로 사용하도록 설정할 수 있습니까?
내 컴퓨터에는 두 개의 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
(창) 명시 적으로 거기 자바 버전을 설정합니다.JAVA_HOME
컴퓨터 구성을 전혀 변경하지 않고 로컬 셸에서 설정할 수 있습니다 (쉘을 닫 자마자 변경 사항이 사라짐). 단일 명령으로 변경할 수도 있습니다.JAVA_HOME=/path/to/jdk17/ mvn build
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 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을 실행할 수 있습니다.
mvn2
및 mvn3
정의 및 Java 버전도 플레이로 올 때 이름은 ... 비트 펑키를 가져옵니다 D
alias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
&&
before 를 생략 해야 mvn
합니다. mvn에는 JAVA_HOME의 값이 표시되지 않습니다 &&
.
창에서
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
mvn.bat
이름이로 변경되었습니다 mvn.cmd
.
최근에 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 쉘로 전환하십시오.
와 다른 JDK 를 사용하여 컴파일 소스를 구성 할 수 있습니다 maven-compiler-plugin
.
그냥에 경로를 지정 javac
에서 <executable>
태그입니다. 예를 들어 java11의 경우 다음과 같습니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source>
<target>11</target>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk-11.0.1\bin\javac</executable> <!--PATH TO JAVAC -->
</configuration>
</plugin>
아래 지침에 따라 Java 버전을 사용하도록 Maven을 설정할 수 있습니다.
머신 링크에 jenv 설치
명령 행에서 다음 명령을 실행하여 시스템에 설치된 사용 가능한 Java 버전을 확인하십시오.
jenv 버전
다음 명령을 사용하여 글로벌 Java 버전을 지정할 수 있습니다.
jenv 글로벌 오라클 64-1.6.0.39
명령 행의 디렉토리에서 다음 명령을 사용하여 모든 디렉토리 (프로젝트)의 로컬 Java 버전을 지정할 수 있습니다.
jenv 로컬 oracle64-1.7.0.11
pom.xml에 올바른 Java 버전을 추가하십시오.
커맨드 라인에서 maven을 실행하는 경우 아래 명령을 사용하여 jenv maven 플러그인 을 설치 하십시오.
jenv enable-plugin maven
이제 문제없이 모든 프로젝트에 맞게 시스템의 모든 Java 버전을 구성 할 수 있습니다.
Mac의 경우 (올바른 버전이 설치되어 있다고 가정)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
환경 변수를 변경하지 않고 Maven Compiler Plugin을 사용하여 프로젝트 레벨을 기반으로 Java 버전을 관리 할 수 있습니다.
방법 1
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
방법 2
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
Linux / Unix에서 'mvn'쉘 스크립트 내의 JAVA_HOME은 다음의 설정으로 대체됩니다.
$HOME/.mavenrc