Saya mencoba membangun plugin Hudson yang telah saya modifikasi dan membutuhkan jdk1.6. Ini baik-baik saja, tapi saya tidak melihat bagaimana saya bisa memberi tahu pakar di mana jdk berbeda. Saya telah menemukan beberapa sebutan di internet tetapi tampaknya tidak berlaku untuk saya. Beberapa menyarankan menambahkan beberapa konfigurasi .m2/settings.xml
tetapi saya tidak punya settings.xml
. Plus, saya tidak ingin menggunakan 1,6 untuk semua build maven.
Satu ketegaran yang saya gunakan mvn
di cygwin, jika itu penting. Tampaknya saya harus dapat membuat spesifikasi dalam file pom proyek, tetapi pom yang ada cukup telanjang.
Jadi intinya adalah, apakah ada cara untuk menentukan jdk untuk satu doa pakar?
set JAVA_HOME="C:\Java\jdk7"
JAVA_HOME
dapat diatur untuk Maven (setidaknya di Mac) dalam file ini:/private/etc/mavenrc
- Dan itu dapat menggunakan sesuatu seperti (perhatikan backticks bukan tanda kutip tunggal!):export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_75`
export JAVA_HOME='D:/dev/java/jdk8/jre'
(bekerja untuk saya)java -version
, itu masih mencetak versi sebelumnya.Tampaknya pakar itu sekarang memberikan solusi di sini: Menyusun Sumber Menggunakan JDK yang Berbeda
Katakanlah
JAVA_HOME
poin Anda ke JDK7 (yang akan menjalankan proses maven)Anda
pom.xml
bisa:Jika pengembang Anda hanya menambahkan (dan mengkustomisasi) baris berikut di
settings.xml
dalamnya, pom Anda akan menjadi platform independen:sumber
-Dmaven.compiler.fork=true
dan-Dmaven.compiler.executable=/path/to/target/javac
di baris perintah.kompilasi: kompilasi memiliki properti pengguna yang memungkinkan Anda menentukan jalur ke
javac
.Perhatikan bahwa properti pengguna ini hanya bekerja ketika
fork
adalahtrue
yangfalse
secara default.Anda mungkin harus menggandakan kutipan nilainya jika mengandung spasi.
Lihat juga prioritas properti kustom Maven .
sumber
JAVA_HOME
variabel saya . Misalnya (dalam bash shell):JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable=/usr/lib/jvm/java-8-openjdk-amd64/bin/javac spring-boot:run
Seperti yang Anda katakan "Plus, saya tidak ingin menggunakan 1,6 untuk semua maven build." .... Jadi lebih baik saya akan mengatakan memodifikasi file pom Anda dan menentukan versi jdk yang akan digunakan.
Ini akan memastikan bahwa proyek khusus Anda menggunakan versi jdk itu.
sumber
Saya mengatakan Anda mensetup
JAVA_HOME
variabel lingkungan seperti yang dikatakan Pascal: Di Cygwin jika Anda menggunakan bash seperti seharusnya:Tidak ada salahnya juga menambahkan
bin
path direktori java kePATH
variabel lingkungan dengan:Juga tambahkan
maven-enforce-plugin
untuk memastikan JDK yang tepat digunakan. Ini adalah praktik yang baik untuk suami Anda.Silakan, lihat plugin Maven Enforcer - Penggunaan .
sumber
Saya tahu ini adalah utas lama. Tapi saya mengalami beberapa masalah dengan sesuatu yang mirip dengan ini di Maven untuk Java 8 sumber kompiler. Saya menemukan ini dengan perbaikan cepat yang disebutkan dalam artikel ini saya pikir saya bisa taruh di sini dan mungkin dapat membantu orang lain:
sumber
Maven menggunakan variabel $ JAVACMD sebagai perintah java terakhir, atur ke tempat eksekusi java akan mengalihkan maven ke JDK yang berbeda.
sumber
Hudson juga memungkinkan Anda untuk mendefinisikan beberapa runtime Java, dan membiarkan Anda memanggil Maven dengan salah satunya. Lihat lebih dekat pada halaman konfigurasi.
sumber
Jika Anda telah menginstal Java melalui
brew
diMac
maka kemungkinan Anda akan menemukan Home Directory Java Anda di sini:Langkah selanjutnya sekarang adalah menemukan
Java Home
direktori yang ditunjuk pakar. Untuk menemukannya ketikkan perintah:mvn -version
Bidang yang kami minati di sini adalah:
Java version
danruntime
.Maven saat ini sedang menunjuk ke
Java 13
. Selain itu, Anda dapat melihat path Home Java di bawah runtime kunci, yaitu:/usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home
Untuk mengubah versi Java dari pakar, kita perlu menambahkan
Java 8
path home keJAVA_HOME
variabel env.Untuk melakukan itu kita perlu menjalankan perintah:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
di terminal.Sekarang jika kita memeriksa versi maven, kita dapat melihat bahwa itu menunjuk ke Java 8 sekarang.
Masalah dengan ini adalah jika Anda memeriksa versi pakar lagi di terminal baru, Anda akan menemukan bahwa itu menunjuk ke Java 13. Untuk menghindari ini, saya akan menyarankan menambahkan
JAVA_HOME
variabel dalam~/.profile
file.Dengan cara ini setiap kali terminal Anda memuatnya akan mengambil nilai yang Anda tetapkan dalam JAVA_HOME secara default. Ini adalah baris yang perlu Anda tambahkan dalam
~/.profile
file:export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Anda dapat membuka terminal baru dan memeriksa versi Maven, (
mvn -version
) dan Anda akan menemukan itu menunjuk ke Java 8 kali ini.sumber
Saya telah membangun masalah dengan pakar dalam Eclipse pada Windows 7.
Meskipun saya amati mvn build berjalan dengan baik dari command line.
Eclipse sedang mempertimbangkan JVM sebagai instalasi JRE standar dan bukan JDK sehingga gagal saat dikompilasi.
Saya menambahkan ke eclipse.ini baris berikut:
Juga ketika mulai dari gerhana saya digunakan di bagian "Tujuan" daftar berikut:
Kesalahan kompilasi diselesaikan.
sumber
Untuk Java 9:
sumber
Namun alternatif lain untuk mengelola beberapa versi jdk adalah jEnv
Setelah instalasi, Anda cukup mengubah versi java "secara lokal" yaitu untuk direktori proyek tertentu dengan:
Ini juga akan membuat mvn menggunakan versi itu secara lokal, ketika Anda mengaktifkan plugin mvn:
sumber
Anda juga bisa mengatur JDK untuk Maven dalam file di direktori home Anda
~/.mavenrc
:Variabel lingkungan ini akan diperiksa oleh skrip mvn dan digunakan saat ini:
https://github.com/CodeFX-org/mvn-java-9/tree/master/mavenrc
sumber