특정 Java 버전을 Maven으로 설정하는 방법은 무엇입니까?
내 컴퓨터에는 두 가지 Java 버전이 설치되어 있습니다. (1.6과 1.7은 내가 수동으로 설치함).서로 다른 프로젝트 때문에 둘 다 필요해요.하지만 Maven의 경우 1.7이 필요한데, 내 Maven은 1.6 Java 버전을 사용합니다.
Maven이 1.7을 사용하도록 설정하려면 어떻게 해야 하나요?
은 Maven을 합니다.JAVA_HOME
파라미터를 지정하여 실행할 Java 버전을 검색합니다.당신의 코멘트를 보면 설정을 변경할 수 없다는 것을 알 수 있습니다.
- 설정할 수 요.
JAVA_HOME
한 경우 합니다).maven은 maven을 사용합니다. - ,, 저, 저, 에 수도 .
mvn
이외윈도우 이외)/mvn.bat
/mvn.cmd
(자바어
편집:
더 나은 해결책은 Ondrej의 답변에 의해 제시되며, 이는 가명을 기억하지 않아도 된다.
원답:
여러 Java 버전이 설치된 사용자를 위한 솔루션 추가
대규모 코드 베이스가 있으며, 그 대부분은 Java로 되어 있습니다.제가 작업하는 작업의 대부분은 Java 1.7 또는 1.8로 작성되어 있습니다.★★JAVA_HOME
했습니다..bashrc
메이븐:
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을 실행할 수 있습니다.
POM에서 컴파일러 속성을 설정할 수 있습니다. 예를 들어 1.8:
<project>
...
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project>
Maven에서 7년간 근무한 지 얼마 되지 않아 toolchains.xml에 대해 알게 되었습니다.Maven은 2.0.9부터 문서화되어 지원 - 툴체인 문서화
그래서 다음 내용을 포함한 toolchains.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
system variable. 시스템 변수.
<고객명>님의 mvn.bat
.
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre
은 다음에 할 수 요.@REM ==== START VALIDATION ====
@@Jonathan이 것과
Mac(& Linux)의 경우
를 JAVA_HOME
in the in variable 。~/.bashrc
★★★★★★★★★★★★★★★★★」~/.bash_profile
만들 수 요.~/.mavenrc
하여 ""를 다시 합니다.JAVA_HOME
java_home 도구 사용
export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`
건전성 검사
다음 명령어를 실행하면 모든 것이 정상적으로 동작하고 있는지 확인할 수 있습니다.jdk 버전은 달라야 합니다.
mvn -version
그리고나서
java -version
내 의견을 더하고 해결책을 명시적으로 제공하는 것.
Machine에는 Windows 2 JDK라는2개의 가 되고 있습니다.JDK 1.5
★★★★★★★★★★★★★★★★★」JDK 1.6
.
디폴트는, 「」( 「Windows」)입니다.JAVA_HOME
로 설정되어 있다.JDK 1.5
.
단, 다음을 사용하여 구축해야 하는 Maven 프로젝트(예: JBehave Tutorial의 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은 아래의 지시에 따라 임의의 Java 버전을 사용하도록 설정할 수 있습니다.
시스템 링크에 jenv 설치
명령줄에서 다음 명령을 실행하여 머신에 설치되어 있는 사용 가능한 Java 버전을 확인합니다.
jenv 버전
다음 명령을 사용하여 글로벌 Java 버전을 지정할 수 있습니다.
jenv global oracle64-1.6.0.39
명령줄의 디렉토리에서 다음 명령을 사용하여 디렉토리(프로젝트)의 로컬 Java 버전을 지정할 수 있습니다.
jenv 로컬 oracle64-1.7.0.11
올바른 Java 버전을 pom.xml에 추가합니다.
명령줄에서 maven을 실행하고 있는 경우 다음 명령을 사용하여 jenv maven 플러그인을 설치합니다.
env enable-maven maven
이제 머신 내의 임의의 Java 버전을 문제 없이 임의의 프로젝트로 구성할 수 있습니다.
이 문제에 대한 간단한 해결 방법:
JAVA_HOME=/usr/lib/jvm/java-6-sun/mvn 클린 설치
Mac에서는 다음과 같이 표시됩니다.
JAVA_HOME=/Library/Java/JavaVirtual Machines/jdk1.7.0_21.jdk/Contents/Home/mvn 클린 설치
PS: 제가 발견한 특별한 사례 중 하나는 위의 명령어가 '물고기' 껍질에서 작동하지 않는다는 것입니다.bash shell도 있었고, 그곳에서는 정상적으로 동작했습니다.명령어 'bash'를 사용하여 bash 쉘로 전환합니다.
Mac의 경우(올바른 버전이 설치되어 있는 경우)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
Windows 에서는, Maven bin 폴더에 다음과 같이 JDK 버전이 다른 복수의 배치 파일을 추가합니다.
mvn11.disples
@echo off
setlocal
set "JAVA_HOME=path\to\jdk11"
set "path=%JAVA_HOME%;%path%"
mvn %*
하면 .mvn11
메이븐.
다른 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>
환경변수를 변경하지 않고 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>
Mac을 사용하고 있는데 위의 답변은 도움이 되지 않습니다.의 JAVA_maven JAVA_Maven을 하는 것을 .한 경로로부터의 HOME:~/.mavenrc
파일 내용을 다음과 같이 변경했습니다.
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
Linux의 경우 다음과 같습니다.
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre
프로젝트와 환경변수에 대한 영향을 피하기 위해 Maven 컴파일러 플러그인을 프로젝트의 POM에만 설정하여 소스 및 타겟 자바 버전을 지정할 수 있습니다.
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
...
</plugins>
자바10의 새로운 기능과 재미를 보기 위해 최근 설치.한번은 이렇게 해서 java8을 사용하는 기존 프로젝트를 실행해 보았습니다.은 Java10을 사용합니다.은 HOME을 사용하도록 .java8 — /usr/libexec/java_home -v 1.8
설치는 brew를 사용하여 수행되었습니다. brew는 Mac OS용 패키지 매니저일 뿐이고, M2_HOME은 자동으로 설정되었습니다.은 보통 이은은보 this this this this this this this this this this this this에 있습니다./usr/local/Cellar/maven/3.5.4
이 새로운 지식으로, 나는 달리기를 한다.
nano /usr/local/Cellar/maven/3.5.4/bin/mvn
내용은
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-$(/usr/libexec/java_home)}" exec "/usr/local/Cellar/maven/3.5.4/libexec/bin/mvn" "$@"
중요한 비트 존재
"${JAVA_HOME:-$(/usr/libexec/java_home)}"
이 문제를 해결하려면 기본적으로 사용할 Java 버전을 지정해야 합니다.그래서 저는 java8이 필요했어요.
/usr/local/Cellar/maven/3.5.4/bin/mvn
과 같이
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-$(/usr/libexec/java_home -v 1.8)}" exec "/usr/local/Cellar/maven/3.5.4/libexec/bin/mvn" "$@"
Linux/Unix에서는 JAVA_'mvn' 셸 스크립트 내의 HOME은 의 설정에 의해 덮어씁니다.
$HOME/.mavenrc
JAVA_를 추가할 위치를 지정하십시오.Linux에서의 HOME 및 MAVEN 경로 변수
에서는 mac .JAVA_HOME
이 이었다.
- 합니다(파일은 .mavenrc "로 됩니다).
~/.mavenrc
- 페이스트에 " " " "
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
vi ~/.bash_profile
- 다음 를 기본 명령으로 합니다.
wq!
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
export M2_HOME=/Users/mj/Tools/apache-maven-3.8.1
려려를
source ~/.bash_profile
으로 작동시키다ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ,
mvn -v
하기 위해 합니다.
Maven home: /Users/mj/Tools/apache-maven-3.8.1
Java version: 1.8.0_211, vendor: Oracle Corporation,
runtime: /Users/mj/Tools/jdk1.8.0_211.jdk/Contents/Home/jre
Default locale: en_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
이유를 알고 싶다면 아래를 읽어주세요.
Java_HOME은 Java Runtime Environment(JRE; Java 런타임 환경) 설치 장소를 정의하기 위해 많은 Java 기반 응용 프로그램에서 사용됩니다.M2_HOME은 Maven에 의해 사용되며, 다시 Maven 설치 위치를 프로그램에 알려줍니다.
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre
행을, 상기의 첫.$MAVEN_HOME\bin\mvn.cmd
Windows 10 서 windows windows windows windows 。
또한 두 가지 버전의 maven을 설치하고 그 중 하나를 편집하여 여기서 편집할 수도 있습니다.
mvn(윈도우 이외)/mvn.bat/mvn.displays(윈도우)
%sube_home% 어피아란스를 원하는 Java 경로로 바꿉니다.그러면 변경된 경로에서 maven을 실행합니다.
@Jonathan의 기본 아이디어를 사용했습니다.창을 설정했습니다: set JAVA_HOME=C:\Program Files\java\AdoptOpenJDK-11.0.8+10에 mvn 클린 패키지 문의 - DskipTests
jenv를 사용하고 있는데 단말기의 mvn이 openjdk 13을 사용하고 있었기 때문에 "javax.xml.bind.annotation" 컴파일 오류가 발생했습니다.
Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 13.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home
여기 https://stackoverflow.com/a/56487374/1582473에서 제안하는 'jenv enable-param maven'을 실행한 후 작동했습니다.
JAVA_ 호출 전에 JAVA 버전을 mvn 파일에 추가하면 됩니다.예를 들어 HOME.bashrc 파일의 JAVA 버전은 Java-17이며 Java-11에서 maven을 실행하고 싶습니다.
내/usr/share/maven/bin/mvn
: : : 가 :
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
하기 JAVA_HOME
Java-11에서는 정상적으로 동작합니다.
나는 위의 답변으로는 이 문제를 해결할 수 없었고 이것을 해결하기 위해 많은 것을 시도했고 나는 그것을 얻었다.나 같은 사람이 문제를 해결했으면 좋겠어요.
java와 maven을 설치하기 위해 brew를 사용하고 있습니다.저는 java 1.8을 사용하고 싶었습니다.그래서 자바 1.8을 설치했지만 버전 17.0.2를 사용할 수 없습니다.
★★★★★★★★★★★★★★★★★★:
install java 1.8 설치는 이 웹사이트를 참조하십시오.https://devqa.io/brew-install-java/
mvn --version
\"을 기억해 주세요.\
cat /usr/local/Cellar/maven/VERSION(for me 3.8.5)/bin/mvn
그러면 알게 될 것이다.
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home}" exec "/usr/local/Cellar/maven/3.8.5/libexec/bin/mvn" "$@"\
이 디렉토리를 확인합니다.
ls /usr/local/opt
openjdk, openjdk@17, openjdk@8 등의 파일이 표시됩니다.
mvn 파일에서 디렉토리 openjdk를 openjdk@8로 변경합니다.
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/usr/local/opt/openjdk@8/libexec/openjdk.jdk/Contents/Home}" exec "/usr/local/Cellar/maven/3.8.5/libexec/bin/mvn" "$@"\
Ondrej의 대답은 완벽하게 먹혔다.그것은 정말로 문제를 해결한다.툴 체인 매뉴얼에 기재되어 있는 기타 몇 가지 작업
- 프로젝트 POM에 maven-toolchains-plugin 추가
- toolchains.xml 파일에서 설정한 대로 툴 체인 내의 특정 JDK를 사용하도록 maven-toolchains-plugin을 설정합니다.
다음의 설정 예를 참조해 주세요.
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>/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>17</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>11</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home</jdkHome>
</configuration>
</toolchain>
</toolchains>
위와 같이 여러 Java 버전이 설치되어 있는 머신에 대해 동작합니다.그런 다음 프로젝트의 POM에서 maven-toolchains-plugin은 도구 체인으로 정의된 JDK 버전 중 하나를 사용하도록 구성됩니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>11</version>
<vendor>sun</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
언급URL : https://stackoverflow.com/questions/19654557/how-to-set-specific-java-version-to-maven
'source' 카테고리의 다른 글
Vue를 'vue'에서 Import하면 '다른' Vue를 다른 파일로 Import합니다. (0) | 2022.08.15 |
---|---|
모키토.메서드 인수 확인 (0) | 2022.08.15 |
AF_의 차이점은 무엇입니까?소켓 프로그래밍의 INET 및 PF_INET? (0) | 2022.08.14 |
데이터 속성 "article"이 이미 소품으로 선언되었습니다.대신 프롭 기본값 사용 (0) | 2022.08.14 |
vue-cli 3을 사용하여 두 개의 번들을 별도로 생성하려면 어떻게 해야 합니까? (0) | 2022.08.14 |