Makinemde iki java sürümü yüklü: (1.6 ve 1.7 manuel olarak kurdum). Her ikisine de farklı projeler için ihtiyacım var. Ama Maven için 1.7'ye ihtiyacım var, şimdi Maven'im 1,6 java sürümünü kullanıyor, Maven'i 1.7'yi kullanmaya nasıl ayarlayabilirim?
Makinemde iki java sürümü yüklü: (1.6 ve 1.7 manuel olarak kurdum). Her ikisine de farklı projeler için ihtiyacım var. Ama Maven için 1.7'ye ihtiyacım var, şimdi Maven'im 1,6 java sürümünü kullanıyor, Maven'i 1.7'yi kullanmaya nasıl ayarlayabilirim?
Yanıtlar:
Maven, JAVA_HOME
hangi Java sürümünü çalıştırması gerektiğini bulmak için parametreyi kullanır . Yorumunuzdan bunu yapılandırmada değiştiremeyeceğinizi görüyorum.
JAVA_HOME
Parametreyi maven'e başlamadan hemen önce ayarlayabilirsiniz (ve gerekirse daha sonra tekrar değiştirebilirsiniz).mvn
(penceresiz) / mvn.bat
/ mvn.cmd
(pencerelerinize) gidebilir ve java sürümünüzü açıkça ayarlayabilirsiniz.JAVA_HOME
Yerel kabuğunuzda, makinenizin yapılandırmasını hiç değiştirmeden ayarlayabilirsiniz (bu kabuğu kapatır kapatmaz, değişiklik gider). Tek bir komut için bile değiştirebilirsiniz:JAVA_HOME=/path/to/jdk17/ mvn build
POM'da, derleyici özelliklerini ayarlayabilirsiniz, örneğin 1.8 için:
<project>
...
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project>
Çoğu Java'da olan büyük bir kod tabanımız var. Üzerinde çalıştığım şeylerin çoğu Java 1.7 veya 1.8'de yazılmıştır. Yana JAVA_HOME
statik, ben benim, takma ad oluşturulan .bashrc
farklı değerlerle Maven'i çalıştırmak için:
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"
Bu, Maven'i projede kullanılan JDK sürümüne bakılmaksızın geliştirme makinemdeki komut satırından çalıştırmama izin veriyor.
mvn2
ve mvn3
tanımladınız ve Java sürümleri de devreye girdiğinde adlandırma biraz korkar ...: D
alias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
&&
önce mvn
. mvn ile JAVA_HOME'un değerini görmez &&
.
Pencerelerde
JAVA_HOME
Değişkeninizi sistem değişkenleri içinde değiştirmek istemiyorsanız .
Senin düzenleyin mvn.bat
dosya ve bunun gibi bir satır ekleyin
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre
Bu @REM ==== START VALIDATION ====
@Jonathan tarafından belirtildiği gibi yapılabilir
Mac'te (& Linux?)
Eğer değiştirmek istemiyorsanız JAVA_HOME
içindeki değişkeni sizin ~/.bashrc
veya~/.bash_profile
java_home aracını kullanarak bir ~/.mavenrc
dosya oluşturabilir ve yeniden tanımlayabilirsinizJAVA_HOME
export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`
Aklı kontrol
Aşağıdaki komutları yürüterek her şeyin yolunda gittiğini doğrulayabilirsiniz. JDK sürümü farklı olmalıdır.
mvn -version
sonra
java -version
Benim iki sent ekleyerek ve açıkça çözüm sağlar.
Windows Makineme iki JDK yükledim - JDK 1.5
ve JDK 1.6
.
Varsayılanım (ve Windows sistem ortam değişkenine JAVA_HOME
ayarlı ) olarak ayarlanmış JDK 1.5
.
Ancak, kullanarak (yani, JBehave Tutorial'ın Etsy.com ) oluşturmak için gereken bir maven projem var JDK 1.6
.
Bu senaryoda benim çözümüm (ki işe yaradı!), Ortaya @DanielBarbarian
koymak için önerildiği gibidir mvn.bat
.
Pencerenin toplu dosya aşina olmayan Bazıları için, sadece temelde eklenen set JAVA_HOME=<path_to_other_jdk>
çizgiyi sonra @REM ==== START VALIDATION ====
içinde mvn.bat
(yani %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
olarak yeniden adlandırıldı mvn.cmd
.
Kısa bir süre önce Maven'le yedi yıl geçirdikten sonra toolchains.xml hakkında bilgi edindim. Maven bile belgeledi ve 2.0.9'dan destekledi - Aletler
Bu yüzden ~ / .m2 / klasörüme şu içeriğe sahip bir toolchain.xml dosyası ekledim:
<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'in çalıştığından bağımsız olarak projeyi oluşturmak için farklı JDK'ların neler kullanabileceğini tanımlamanızı sağlar. IDE'de proje düzeyinde JDK tanımladığınızda olduğu gibi.
Soruna basit bir çözüm -
JAVA_HOME = / usr / lib / jvm / java-6-sun / mvn temiz yükleme
Mac'te, şuna benzer -
JAVA_HOME = / Kütüphane / Java / JavaVirtualMachines / jdk1.7.0_21.jdk / İçindekiler / Ana Sayfa / mvn clean install
PS: Ben buldum özel bir durum yukarıda verilen komut 'balık' kabuk üzerinde çalışmıyor olmasıdır. Ayrıca bash kabuk mevcut vardı ve orada iyi çalıştı. bash kabuğuna geçmek için sadece 'bash' komutunu kullanın.
Sen yapılandırabilirsiniz farklı JDK kullanımı kaynaklardan derleme ile maven-compiler-plugin
.
Sadece yolunu belirtin javac
içinde <executable>
etiketi. Örneğin, java11 için şöyle görünür:
<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>
Ortam Değişkenlerini değiştirmeden, Maven Derleyici Eklentisini kullanarak java sürümünü proje düzeyine göre yönetebilirsiniz.
Yöntem 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>
Yöntem 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>
Projenize ve Ortam Değişkenlerinize herhangi bir etkiyi önlemek için Maven Derleyici Eklentisini Kaynak ve Hedef java sürümünü belirterek yalnızca projenin POM'sine yapılandırabilirsiniz.
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
...
</plugins>
Maven'i aşağıdaki talimatları izleyerek herhangi bir java sürümünü kullanacak şekilde ayarlayabilirsiniz.
Jenv'yi makine bağlantınıza yükleyin
Komut satırında aşağıdaki komutu vererek makinenize kurulu mevcut java sürümlerini kontrol edin.
jenv sürümleri
Aşağıdaki komutu kullanarak genel Java sürümünü belirleyebilirsiniz.
jenv global oracle64-1.6.0.39
Komut satırındaki dizinde aşağıdaki komutu kullanarak herhangi bir dizin (Proje) için yerel Java sürümünü belirtebilirsiniz.
jenv yerel kâhin64-1.7.0.11
pom.xml'nize doğru java sürümünü ekleyin
maven komut satırında çalıştırıyorsanız, aşağıdaki komutu kullanarak jenv maven eklentisini yükleyin
jenv enable-eklentisi maven
Artık makinenizdeki herhangi bir java sürümünü herhangi bir projeye herhangi bir sorun olmadan yapılandırabilirsiniz.
Mac'lerde (doğru sürümün yüklü olduğu varsayılarak)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
Pencerelerde, Maven bin klasörüne şu şekilde farklı JDK sürümleri için birden fazla toplu iş dosyası ekliyorum:
mvn11.cmd
@echo off
setlocal
set "JAVA_HOME=path\to\jdk11"
set "path=%JAVA_HOME%;%path%"
mvn %*
mvn11
Maven'i belirtilen JDK'da çalıştırmak için kullanabilirsiniz .
Linux / Unix'te, 'mvn' kabuk komut dosyasındaki JAVA_HOME,
$HOME/.mavenrc
Lütfen Linux'ta JAVA_HOME ve MAVEN yol değişkenleri nereye eklenmeli
JAVA_HOME
Konsolda sadece Mac'te başarılı olamadım ama bu yaklaşımla başarılı oldum
~/.mavenrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
Ayrıca , maven'in iki sürümünü yükleyebilir ve bunlardan birini düzenleyerek burada düzenleyebilirsiniz:
mvn (non-dönüş) /mvn.bat/mvn.cmd (dönüş)
% java_home% görünümlerinizi java istediğiniz yolunuza yerleştirerek. Sonra sadece bu değiştirilmiş yoldan maven yürütmek