I'm new to maven, and also to MacOS.
I have setup maven in my terminal, and when getting the version settings (using mvn -v
) it seems it uses JDK 1.6, while I have JDK 1.7 installed. Is there anything wrong?
The commands I enter are these:
blues:helloworld Ninja$ java -version
java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)`
blues:helloworld Ninja$ mvn -v
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32+0800) Maven home: /usr/local/Cellar/maven/3.1.0/libexec Java version: 1.6.0_51, vendor: Apple Inc. Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Default locale: zh_CN, platform encoding: EUC_CN OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"
add the following to your ~/.mavenrc
:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home
echo export "JAVA_HOME=\\$(/usr/libexec/java_home)" >> ~/.bash_profile
Get into
/System/Library/Frameworks/JavaVM.framework/Versions
and update the CurrentJDK
symbolic link to point to
/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/
Eg
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK
Now it shall work immediately.
You can also do,
<properties>
...
<!-- maven-compiler-plugin , aka JAVA Compiler 1.7 -->
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
...
</properties>
You can also explicitly tell maven which java version to compile for. You can try adding the maven-compiler-plugin
to your pom.
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
If you imported a maven project into an IDE, then there is probably a maven setting in your IDE for default compiler that your maven runner is using.
It helped me. Just add it in your pom.xml.
By default maven compiler plugin uses Java 1.5 or 1.6, you have to redefine it in your pom.xml.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
For Eclipse Users. If you have a Run Configuration that does clean package for example.
In the Run Configuration panel there is a JRE tab where you can specify against which runtime it should run. Note that this configuration overrides whatever is in the pom.xml.
我对这个问题迟到了,但我认为在 MacOS 上处理 JDK 版本的最佳方法是使用以下描述的脚本: http : //www.jayway.com/2014/01/15/how-to-switch-jdk -version-on-mac-os-x-maverick/
Please check the compatibility. I struggled with mvn 3.2.1
and jdk 1.6.0_37
for many hours. All variables were set but was not working. Finally I upgraded jdk to 1.8.0_60
and mvn 3.3.3
and that worked. Environment Variables as following:
JAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0_60
MVN_HOME=C:\ProgramFiles\apache-maven\apache-maven-3.3.3
M2=%MVN_HOME%\bin extend system level Path- ;%M2%;%JAVA_HOME%\bin;
@MasterGaurav's solution works perfectly.
I normally put the Java switch statement into a zsh function:
alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'
function java_use() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
echo export "JAVA_HOME=$(/usr/libexec/java_home -v $1)" > ~/.mavenrc
export PATH=$JAVA_HOME/bin:$PATH
java -version
}
You can run java_ls
to get all of the available JVMs on your machine,
and then java_use 1.7
to use 1.7 for both Java and Maven.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.