我正在 Jenkins 中运行我的 Maven/Spring 项目(只是第一次测试它),使用 shell 脚本选项:
mvn spring-boot:run
我收到构建错误:
/Users/Shared/Jenkins/tmp/jenkins8087926087546049217.sh: line 2: mvn: command not found
我该如何解决这个问题?它是一个 Spring-boot 应用程序。当我通过命令行运行
mvn spring-boot:run
时效果很好。
我在 Windows 上也遇到了类似的问题。 Maven 在控制台上工作正常,但从 Jenkins 调用 cmd 命令时失败。
原因是 Jenkins 作为“系统用户”服务安装和运行。这意味着该进程无法看到您的用户(用户级别)的 ENV 变量和 PATH。在系统级别的 PATH 和 ENV 变量中设置 Maven 就可以了。
P.S.:@Charo 在较新的 Jenkins 版本中,maven 配置从配置系统转移到全局工具配置
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$MAVEN_HOME/bin
mvn --version
mvn clean package
然后 mvn install
我也遇到这个问题并解决了。我认为当您通过“新建项目”按钮创建新项目时,您可能正在使用“FreeStyle 项目”而不是“Maven 项目”。
在FreeStyle项目中,Jenkins可能无法在“全局工具配置”中读取Linux服务器和Maven安装中的环境变量,因此我在“配置系统”中重复配置了环境变量。然后就成功了。
确保你的maven配置是正确的。 您可以使用 cmd 并运行:
mvn -version
如果没有错误,请尝试
mvn spring-boot:run
也许这是一个愚蠢的答案,但我忘记将 Maven 作为 Jenkinsfile 中的工具。
pipeline {
agent any
tools {
maven 'Maven 3.8.6'
jdk 'Java 17.0.4.1'
}
stages {
}
}
我也遇到过类似的问题,我将名称命名为 maven-3.3.9
并将 MAVEN_HOME 像:E:\Softwares pache-maven-3.3.9 放入
我在 ubuntu 16.04 机器上遇到了这个问题,实际原因是 maven bin 目录路径未设置 $PATH 变量。
如何查看?
您可以在 Jenkins GUI 的执行 shell 提示符中附加以下行。
echo $M2_HOME
echo $PATH
mvn clean install
当您再次构建时,您将看到 $PATH 变量中未设置 M2_HOME 或 maven bin 路径。
或者您可以从root登录Jenkins用户并运行以下命令。
su - Jenkins
echo $PATH
解决方案::
1. logged in to root user.
2. then this command cd /etc/profile.d/
3. vim maven.sh then add below lines
export M2_HOME=/usr/local/maven
export PATH=$PATH:$M2_HOME/bin
4. run this command chmod +x maven.sh
5. then login to jenkins user (su - jenkins) then see again maven path is set or not via (echo $PATH) command.
6. If the path is set then restart Jenkins service
service jenkins restart
and re-login in Jenkin GUI (http://localhost:8080/)
7. Now rebuild your job then you will get success :-)
如果你的代理是一个没有 maven 的 docker 镜像,你也可能会得到 mvn not found 错误
在命令执行设置中
set path=C:\Program Files\apache-maven-3.8.7\bin
您在 Windows 环境中的路径
cd C:\Users\X\IdeaProjects\ "nameofprocject"
只需从 Intellij/Eclipse 复制
mvn -Dtest=MainPageTests test
-> Maven 运行的目标
2024 年解决方案
安装
Pipeline Maven Integration Plugin
并在 Jenkinsfile 中使用 Maven,如下所示:
pipeline {
agent any
stages {
stage("Build") {
steps {
git url: 'https://github.com/cyrille-leclerc/multi-module-maven-project'
withMaven {
sh "mvn clean verify"
} // withMaven will discover the generated Maven artifacts, JUnit Surefire & FailSafe reports and FindBugs reports
}
}
}
}