2015-11-27 133 views
0

我们正在尝试将我们所有的系统升级到jdk1.8.0_66,其中包括maven(在jenkins上运行)。Set Mavens Java版本

[[email protected] jvm]$ mvn -version 
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100) 
Maven home: /opt/apache-maven-3.0.5 
Java version: 1.6.0_24, vendor: Sun Microsystems Inc. 
Java home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "2.6.32-279.5.2.el6.centos.plus.x86_64", arch: "amd64", family: "unix" 
[[email protected] jvm]$ echo $JAVA_HOME 
/opt/java 
[[email protected] jvm]$ file /opt/java 
/opt/java: symbolic link to `jdk1.8.0_66' 

所有快速谷歌导致的是,我应该改变我的JAVA_HOME到所需的Java版本。正如您在上面看到的,它设置为jdk1.8.0_66,但Maven正在使用完全不同的路径。

问题: 如何更改maven的JAVA_HOME

编辑:

继@Rottens答案,我manged得到行家与jdk1.8.0_66运行,Maven的JAVA_HOME被设置为/opt/jdk1.8.0_66/jre

不过,我仍然在尝试部署了以下错误(建筑工作正常):

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project deployTest: Fatal error compiling: invalid target release: 1.7

在POM编译插件设置如下:

<plugin> 
    <inherited>true</inherited> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>${maven.compiler.plugin.version}</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 

在我的Jenkins项目配置中,我指定它使用default JDK和Maven Version 3.2.1

只注意到:

的Maven版本3.0.5(我配置为使用1.8)没有出现在詹金斯。 Jenkins中出现的版本是3.2.1,3.1.13.0.4

+0

您是否检查过'/ private/etc/mavenrc'和'〜/ .mavenrc'来覆盖JAVA_HOME设置? –

+0

'mvn --v'的输出是什么? – Patrick

+0

Maven是否也使用相同的用户jenkins?很有可能您的Maven用户对“JAVA_HOME”设置不同。 – nobeh

回答

0

我的问题通过从Jenkins卸载jdk1.7.0解决,只剩下jdk1.8.0

配置每个项目明确使用jdk1.8.0也有效,但这是出于维护的原因不是我们想要做的。

我不知道为什么让詹金斯自动选择jdk1.8.0编译没有工作,但这似乎是问题。

此外,我将Maven本身升级到了3.3.9以及所有使用过的maven插件到它们各自的最新版本。这并没有影响Maven构建。但它确实打破了我们的蚂蚁构建。

我还升级了Jenkins以运行在Java 1.8而不是1.7上,这没有任何效果(编译时间略微缩短)。

0

一定要检查你的$ PATH环境变量,我总是在我的.profile中设置我的JAVA_HOME,然后在我的PATH变量的开头使用它,所以我总是确定我正在使用我的jdk版本的选择。 somethign这样的:

JAVA_HOME=/opt/java/jdk/jdk1.8_65 
export JAVA_HOME 

PATH=$JAVA_HOME/bin:$PATH 
export PATH 
+0

这似乎有点工作。仍然没有编译,但Java版本现在是正确的。 –

+0

@Martin是你的运行时还设置为java 8? – Patrick

+0

@Patrick根据'java -version'将它设置为'1.8.0_66-b17' –

0

更新您的系统免受Apache Maven 3.0.5的行家版Apache Maven 3.3.x

OR

在项目的POM进行修改,以便适应系统为:

<plugin> 
    <inherited>true</inherited> **//default set to true** 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0.5</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 
+0

已升级到“3.3.9”,使用JDK的“默认”选项会产生一个“UnsupportedClassVersionError”。如果我明确使用“1.8.0”,则发布成功。 –

+0

明确表示为? @Martin – nullpointer

+0

我们的詹金斯已经(或者更确切的说)安装了jdk1.7和jdk1.8。当使用“默认”它使用1.8,但失败。但是,如果你使用“1.8”,它仍然使用相同的jdk,但是成功了。 –