Di mesin saya, saya memiliki dua versi java diinstal: (1,6 dan 1,7 diinstal secara manual oleh saya). Saya membutuhkan keduanya untuk proyek yang berbeda. Tetapi untuk Maven saya membutuhkan 1,7, sekarang Maven saya menggunakan versi java, bagaimana saya bisa mengatur Maven untuk menggunakan 1,7?
166
Jawaban:
Maven menggunakan
JAVA_HOME
parameter untuk menemukan versi Java mana yang seharusnya dijalankan. Saya melihat dari komentar Anda bahwa Anda tidak dapat mengubahnya di konfigurasi.JAVA_HOME
parameter sebelum memulai maven (dan mengubahnya kembali sesudahnya jika perlu).mvn
(non-windows) /mvn.bat
/mvn.cmd
(windows) Anda dan mengatur versi java Anda secara eksplisit di sana.sumber
JAVA_HOME
shell lokal Anda tanpa mengubah konfigurasi mesin Anda sama sekali (segera setelah Anda menutup shell itu, perubahan itu hilang). Anda bahkan dapat mengubahnya untuk satu perintah:JAVA_HOME=/path/to/jdk17/ mvn build
Di POM, Anda dapat mengatur properti kompiler, misalnya untuk 1.8:
sumber
Menambahkan solusi untuk orang-orang dengan beberapa versi Java diinstal
Kami memiliki basis kode yang besar, sebagian besar di Jawa. Mayoritas apa yang saya kerjakan ditulis dalam Java 1.7 atau 1.8. Karena
JAVA_HOME
statis, saya membuat alias di.bashrc
untuk menjalankan Maven dengan nilai yang berbeda:Ini memungkinkan saya menjalankan Maven dari baris perintah pada mesin pengembangan saya terlepas dari versi JDK yang digunakan pada proyek.
sumber
mvn2
danmvn3
menetapkan dan penamaannya menjadi sedikit funky ketika versi Java juga ikut bermain ...: Dalias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
&&
sebelumnyamvn
. mvn tidak melihat nilai JAVA_HOME dengan&&
.Di jendela
Jika Anda tidak ingin mengubah
JAVA_HOME
variabel Anda di dalam variabel sistem.Edit
mvn.bat
file Anda dan tambahkan baris seperti iniIni bisa dilakukan setelah
@REM ==== START VALIDATION ====
seperti disebutkan oleh @JonathanDi Mac (& Linux?)
Jika Anda tidak ingin mengubah
JAVA_HOME
variabel Anda di dalam~/.bashrc
atau~/.bash_profile
Anda dapat membuat
~/.mavenrc
file dan mendefinisikan kembali AndaJAVA_HOME
menggunakan alat java_homeSanity Check
Anda dapat memverifikasi bahwa semuanya berfungsi dengan baik dengan menjalankan perintah berikut. Versi jdk harus berbeda.
mvn -version
kemudian
java -version
sumber
Menambahkan dua sen saya dan secara eksplisit memberikan solusinya.
Saya memiliki dua JDK yang diinstal pada Mesin Windows saya -
JDK 1.5
danJDK 1.6
.Default saya (dan diatur ke variabel lingkungan sistem windows)
JAVA_HOME
diatur keJDK 1.5
.Namun, saya memiliki proyek pakar yang perlu saya bangun (yaitu, Etsy.com Tutorial JBehave ) menggunakan
JDK 1.6
.Solusi saya dalam skenario ini (yang berhasil!), Seperti yang disarankan oleh
@DanielBarbarian
untuk memasangnyamvn.bat
.Untuk beberapa yang tidak terbiasa dengan file batch window, saya pada dasarnya menambahkan
set JAVA_HOME=<path_to_other_jdk>
baris setelah@REM ==== START VALIDATION ====
dalammvn.bat
(yaitu,%MAVEN_HOME%\bin\mvn.bat
):sumber
mvn.bat
diubah namanya menjadimvn.cmd
.Saya baru-baru ini, setelah tujuh tahun bersama Maven, belajar tentang toolchains.xml. Maven bahkan telah mendokumentasikan dan mendukungnya dari 2.0.9 - dokumentasi toolchains
Jadi saya menambahkan file toolchain.xml ke folder ~ / .m2 / saya dengan konten berikut:
Hal ini memungkinkan Anda untuk menentukan apa yang berbeda JDK Maven dapat digunakan untuk membangun proyek terlepas dari JDK Maven berjalan dengan. Agak seperti ketika Anda mendefinisikan JDK pada tingkat proyek di IDE.
sumber
Satu solusi sederhana untuk masalah ini -
Di Mac, akan terlihat seperti -
PS: Satu kasus khusus yang saya temukan adalah perintah yang diberikan di atas tidak bekerja pada shell 'fish'. Saya juga punya bash shell yang tersedia dan bekerja dengan baik di sana. cukup gunakan perintah 'bash' untuk beralih ke bash shell.
sumber
Anda dapat mengkonfigurasi kompilasi sumber menggunakan JDK berbeda dengan
maven-compiler-plugin
.Cukup tentukan path ke
javac
dalam<executable>
tag. Misalnya untuk java11 sepertinya:sumber
Untuk menghindari dampak pada proyek Anda dan Variabel Lingkungan Anda, Anda dapat mengonfigurasi Plugin Maven Compiler hanya untuk POM proyek, menentukan Sumber dan Target versi java
sumber
Anda dapat mengatur Maven untuk menggunakan versi java apa pun mengikuti instruksi di bawah ini.
Instal jenv di tautan mesin Anda
Periksa versi java yang tersedia yang terpasang di mesin Anda dengan mengeluarkan perintah berikut di baris perintah.
Anda dapat menentukan versi Java global menggunakan perintah berikut.
Anda dapat menentukan versi Java lokal untuk direktori apa saja (Proyek) menggunakan perintah berikut di direktori di baris perintah.
tambahkan versi java yang benar di pom.xml Anda
jika Anda menjalankan maven di command line, instal jenv maven plugin menggunakan perintah di bawah ini
Sekarang Anda dapat mengkonfigurasi versi java di mesin Anda ke proyek apa pun tanpa masalah.
sumber
Di Mac, (dengan asumsi Anda memiliki versi yang benar diinstal)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
sumber
Tanpa mengubah Variabel Lingkungan, Anda dapat mengelola versi java berdasarkan tingkat proyek dengan menggunakan Maven Compiler Plugin.
Metode 1
Metode 2
sumber
Di windows, saya hanya menambahkan beberapa file batch untuk versi JDK yang berbeda ke folder Maven bin seperti ini:
mvn11.cmd
maka Anda dapat menggunakan
mvn11
untuk menjalankan Maven di JDK yang ditentukan.sumber
Di Linux / Unix, JAVA_HOME dalam skrip shell 'mvn' ditimpa oleh pengaturan di
tolong Di mana menambahkan variabel path JAVA_HOME dan MAVEN di linux
sumber
Saya tidak berhasil di 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)
sumber
Anda juga dapat menginstal dua versi pakar, dan mengedit salah satunya, mengedit di sini:
mengganti% java_home% penampilan Anda ke jalur java yang Anda inginkan. Kemudian jalankan saja pakar dari jalur yang dimodifikasi itu
sumber