You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins声明式流水线:Tools配置Maven正常,Shell执行mvn报错

解决Jenkins流水线中Shell执行mvn test报错的问题

这个问题我之前也碰到过,核心原因是Jenkins的tools块配置的环境变量不会自动传递给默认的shell进程,而内置的mvn步骤是直接使用Jenkins管理的Maven实例,所以能正常运行。

为什么会报错?

当你在tools块里配置Maven和JDK时,Jenkins会把这些工具的路径注入到流水线的环境变量(比如MAVEN_HOME、JAVA_HOME)中,但shell步骤默认启动的是一个干净的子进程,不会自动加载这些环境变量。这时候你执行mvn test,shell会去系统默认的PATH里找Maven,如果系统没有安装Maven,或者PATH里的Maven不是Jenkins配置的那个版本,就会出现Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher的错误——这本质是Maven的运行环境没有正确初始化,找不到它需要的核心类。

三个可行的解决方案

方案1:使用withMaven插件(推荐)

如果你安装了Jenkins的Pipeline Maven Integration Plugin,可以用withMaven块来包裹shell命令,它会自动帮你配置好Maven和JDK的环境变量,让shell能正确找到Maven:

pipeline{ 
    agent {label "linux-slave-01"} 
    tools { 
        maven : "Maven 3.2" 
        jdk : "oracle-jdk-1.8" 
    } 
    stages{ 
        stage('Run Tests'){ 
            steps{ 
                withMaven(maven: 'Maven 3.2', jdk: 'oracle-jdk-1.8') {
                    sh 'mvn test'
                }
            } 
        } 
    } 
}

方案2:直接使用Maven的绝对路径

你可以通过env.MAVEN_HOME获取Jenkins配置的Maven安装路径,直接调用它的可执行文件:

pipeline{ 
    agent {label "linux-slave-01"} 
    tools { 
        maven : "Maven 3.2" 
        jdk : "oracle-jdk-1.8" 
    } 
    stages{ 
        stage('Run Tests'){ 
            steps{ 
                sh "${MAVEN_HOME}/bin/mvn test"
            } 
        } 
    } 
}

方案3:手动将Maven路径添加到Shell的PATH中

在shell命令里先把MAVEN_HOME/bin添加到PATH,再执行mvn test:

pipeline{ 
    agent {label "linux-slave-01"} 
    tools { 
        maven : "Maven 3.2" 
        jdk : "oracle-jdk-1.8" 
    } 
    stages{ 
        stage('Run Tests'){ 
            steps{ 
                sh 'export PATH=$MAVEN_HOME/bin:$PATH && mvn test'
            } 
        } 
    } 
}

而你之前用内置的mvn test步骤能正常运行,是因为这个步骤是Jenkins直接调用它管理的Maven实例,不需要依赖shell的环境变量,所以能正确加载Maven的核心类,不会出现错误。

内容的提问来源于stack exchange,提问作者sirineBEJI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:23:21