Jenkins Workflow插件Maven“在这种环境中没有提供编译器”

时间:2015-12-18 12:09:54

标签: maven jenkins groovy jenkins-workflow

我有一个包含以下Groovy代码段的Workflow作业:

def mvnHome = tool 'M3'
sh "${mvnHome}/bin/mvn install"

当我运行它时,我收到错误:

[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

我在“Jenkins> Manage Jenkins> Configure System”中安装了JDK,并命名为“JAVA_HOME”。当运行“Freestyle项目”作业来测试安装时:

echo "JDK: $JAVA_HOME"

输出很好:

JDK: /var/lib/jenkins/tools/hudson.model.JDK/JAVA_HOME

我也试过重启詹金斯,但没有帮助。请指教。

仅供参考,我开始通过更改工作流代码来使用以下修复程序:

def mvnHome = tool 'M3'
def javaHome = tool 'JAVA_HOME'

sh "JAVA_HOME=$javaHome $mvnHome/bin/mvn install"

我不知道这是正确的解决方案还是黑客攻击。

2 个答案:

答案 0 :(得分:1)

您的最终脚本看起来是正确的。 Maven通常需要运行完整的JDK,而不仅仅是JRE。如果您的构建从属设备尚未在其$PATH中有一个,那么您可以使用tool步骤修改$PATH和/或$JAVA_HOME以指向它。

答案 1 :(得分:0)

这个问题很老,但詹金斯建议这样:

withEnv(["JAVA_HOME=${ tool 'JAVA_HOME' }", "PATH+MAVEN=${tool 'M3'}/bin"]) {

    sh "mvn install"

}

您可以在这里看到它:Jenkins Pipeline Examples。它对我有用