Pada mesin saya, saya memiliki dua versi jawa diinstal: (1.6 dan 1.7 diinstal secara manual oleh saya). Aku butuh keduanya untuk proyek yang berbeda. Tapi untuk Maven saya perlu 1.7, sekarang saya menggunakan Maven 1,6 versi java, bagaimana saya dapat mengatur Maven untuk menggunakan 1.7?
Maven menggunakan JAVA_HOME
parameter untuk menemukan yang versi Java yang seharusnya dijalankan. Saya lihat dari komentar anda bahwa anda dapat't perubahan yang di konfigurasi.
JAVA_HOME
parameter sebelum anda mulai maven (dan mengubahnya kembali setelah itu jika perlu). mvn
(non-windows)/mvn.bat
/mvn.cmd
(windows) dan menetapkan versi jawa yang secara eksplisit tidak ada.Kami memiliki besar basis kode, yang sebagian besar adalah di pulau Jawa. Sebagian besar dari apa yang sedang saya kerjakan ini ditulis dalam Java 1.7 atau 1.8. Sejak JAVA_HOME
adalah statis, saya membuat alias pada saya .bashrc
untuk menjalankan Maven dengan nilai yang berbeda:
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"
Hal ini memungkinkan saya menjalankan Maven dari baris perintah pada pengembangan mesin terlepas dari JDK versi yang digunakan pada proyek.
Pada windows
Jika anda tidak ingin mengubah anda JAVA_HOME
variabel di dalam sistem variabel tersebut.
Mengedit mvn.bat
file dan tambahkan baris seperti ini
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre
Hal ini dapat dilakukan setelah @REM ==== MULAI VALIDASI ====
seperti disebutkan oleh @Jonathan
Pada Mac (& Linux ?)
Jika anda tidak ingin mengubah anda JAVA_HOME
variabel dalam ~/.bashrc
atau ~/.bash_profile
anda dapat membuat ~/.mavenrc
file dan mendefinisikan anda JAVA_HOME
menggunakan java_home tool
export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`
Pemeriksaan Kesehatan
Anda dapat memverifikasi bahwa semuanya bekerja dengan baik dengan menjalankan perintah berikut. Jdk versi harus berbeda.
mvn -versi
kemudian
jawa -versi
Menambahkan dua sen secara eksplisit dan memberikan solusi.
Saya memiliki dua JDKs diinstal pada Mesin Windows saya - JDK 1.5
dan JDK 1.6
.
Default saya (dan mengatur sistem windows variabel lingkungan) JAVA_HOME
diatur JDK 1.5
.
Namun, saya memiliki maven project yang saya butuhkan untuk membangun (yaitu, JBehave Tutorial's Etsy.com) menggunakan JDK 1.6
.
Solusi saya dalam skenario ini (yang bekerja!), ini seperti yang disarankan oleh @DanielBarbarian
untuk mengatur hal ini dalam mvn.bat
.
Untuk beberapa tidak akrab dengan jendela's file batch, saya pada dasarnya hanya menambahkan set JAVA_HOME=<path_to_other_jdk>
setelah @REM ==== MULAI VALIDASI ====
di mvn.bat
(yaitu, %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
Saya baru-baru ini, setelah tujuh tahun yang panjang dengan Maven, belajar tentang toolchains.xml. Maven memiliki itu bahkan didokumentasikan dan mendukung dari 2.0.9 - toolchains dokumentasi
Jadi saya menambahkan toolchain.xml file untuk saya ~/.m2/ folder dengan konten berikut:
<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>
Hal ini memungkinkan anda untuk menentukan apa yang berbeda JDKs Maven dapat digunakan untuk membangun proyek terlepas dari JDK Maven berjalan dengan. Seperti saat anda menentukan JDK pada tingkat proyek dalam IDE.
Untuk menghindari dampak untuk proyek anda dan untuk Variabel Lingkungan anda, anda dapat mengkonfigurasi Maven Compiler Plugin hanya untuk proyek's POM, menentukan Sumber dan Target versi jawa
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
...
</plugins>
Salah satu solusi sederhana untuk masalah ini -
JAVA_HOME=/usr/lib/jvm/java-6-sun/ mvn clean install
Pada Mac, itu akan terlihat seperti -
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Isi/Home/ mvn clean install
PS: Satu hal yang saya temukan adalah atas perintah yang diberikan tidak bekerja pada 'ikan' shell. Saya juga punya bash shell yang tersedia dan bekerja dengan baik di sana. hanya menggunakan command 'bash' untuk beralih ke bash shell.
Anda dapat mengatur Maven untuk menggunakan versi jawa yang mengikuti petunjuk di bawah ini.
Menginstal jenv di mesin anda link
Periksa tersedia java versi yang terinstal di mesin anda dengan mengeluarkan perintah berikut di command line.
jenv versi
Anda dapat menentukan global versi Java menggunakan perintah berikut.
jenv global oracle64-1.6.0.39
Anda dapat menentukan daerah Jawa versi untuk setiap direktori(Proyek) dengan menggunakan perintah berikut ini di direktori pada command line.
jenv lokal oracle64-1.7.0.11
tambahkan memperbaiki java versi anda pom.xml
jika anda menjalankan maven di command line install jenv maven plugin menggunakan perintah di bawah ini
jenv mengaktifkan plugin maven
Sekarang anda dapat mengkonfigurasi setiap versi java di komputer anda untuk setiap proyek dengan keluar masalah.
Pada Linux/Unix, yang JAVA_HOME dalam 'mvn' shell script digantikan oleh pengaturan di
$HOME/.mavenrc
Anda bisa mengkonfigurasi kompilasi menggunakan sumber-sumber yang berbeda JDK dengan maven-compiler-plugin
.
Hanya menentukan jalan untuk javac
di <eksekusi>
tag. E. g untuk java11 itu terlihat seperti:
<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>
Di windows, saya hanya menambahkan beberapa batch file untuk berbagai JDK versi untuk Maven bin folder seperti ini:
mvn11.cmd
cmd @echo off setlocal mengatur "JAVA_HOME=path\to\jdk11" mengatur "path=%JAVA_HOME%;%path%" mvn %*
kemudian anda dapat menggunakan mvn11
untuk menjalankan Maven di tentukan JDK.
Saya tidak memiliki keberhasilan pada mac dengan hanya pengaturan JAVA_HOME
di konsol, tapi saya berhasil dengan pendekatan ini
~/.mavenrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
Tanpa mengubah Variabel Lingkungan, Anda dapat mengatur versi jawa yang didasarkan pada tingkat proyek dengan menggunakan Maven Compiler Plugin.
Metode 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>
Metode 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>
Anda juga dapat memiliki dua versi maven diinstal, dan mengedit one dari mereka, editing berikut:
mvn(non-windows)/mvn.bat/mvn.cmd(windows)
mengganti %java_home% penampilan ke jawa diinginkan path. Kemudian hanya menjalankan maven dari yang dimodifikasi jalan