我有一个包含以下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"
我不知道这是正确的解决方案还是黑客攻击。
答案 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。它对我有用