jenkins使用pipeline创建job,mvn命令找不到

Jenkins使用pipeline创建job,执行sh "mvn clean compile"命令时报错,提示mvn: not found,但是服务器上执行mvn命令没问题,使用自由风格创建的也可以执行mvn打包,只有使用pipeline时会报错,使用mvn,绝对路径/mvn都不行,服务器上环境变量都是配置好的
已邀请:

赵班长 - 不忘初心,方得始终!

环境变量的问题,使用绝对路径。你可以把绝对路径发出来,可能是绝对路径也写错了。

是Jenkins使用docker安装导致的……

我也遇到了同样的问题,大佬有没有解决啊

服务器上执行没有问题的话,一般是环境变量导致的,你可以在执行 mvn 前加一句 ‘source /etc/profile’ 前提是你在 profile 中已经写好了 export

如果是在 jenkins 的 node 中执行,可以使用 nodejs(configId: ‘’, nodeJSInstallationName: ‘’) {
npm_prefix = ‘/root/.npm’
sh “””
cd ${WORKSPACE} && ./${buildFile}
“””
}
语法,前提是在全局设置中有可用的设置

还有人在这发东西吗

应该在pipeline内的mvn步骤内加入mvn和java的环境变量,否则不识别,原因是因为jenkins构建时默认相当于启动了一个新的终端,所以识别不了你之前添加的环境变量,配置如下:


stage('代码编译'){
steps {
sh """
JAVA_HOME=/usr/local/jdk
PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH
mvn clean package -Dmaven.test.skip=true
"""
}
}

环境变量的问题,将mvn的环境变量放到pipeline的sh内,mvn的上方,如下所示,pnpm、npm都是依靠export的环境变量来加载的:


        stage('代码编译'){
steps {
sh """
export PATH=$PATH:/usr/local/node-v17.3.1-linux-x64/bin
# git checkout dev
# git pull origin dev
#npm install -g pnpm
pnpm config set registry https://registry.npmmirror.com
# pnpm config get registry
pnpm install
pnpm run build:prod
"""
}
}

要回复问题请先登录注册