Jenkins 多分支管道 - mvn 未被识别为命令

Jenkins Multibranch Pipeline - mvn is not recognized as a command

我想为我的 Spring 引导项目设置一个简单的多分支管道。我在 Jenkins 中创建了这样一个多分支管道,连接到我的 GitHub 存储库中,我通过一个简单的步骤推送了一个非常基本的 Jenkinsfile:

pipeline {
agent any
stages {
    stage('Build with unit testing') {
        steps {
            bat 'mvn clean package'
        }
    }
}
}

但是 Jenkins 似乎不理解 mvn 命令,因为我在构建中收到以下消息:

'mvn' is not recognized as an internal or external command, operable program or batch file.

进入全局工具配置,我试图在其中指定 Maven 安装,但无论我做什么,此配置似乎都不会持续存在(我添加了我的 Maven,单击 Apply/Save,退出然后再次返回此屏幕,Maven 部分再次为空,仅显示 "Maven installations..." 按钮。我想这就是问题所在。我在某处读到这是 Jenkins 错误?但真的可以解码关于如何在我的 Jenkinsfile 中解决这个问题的解决方案)。

你们有什么技巧可以解决这个问题吗?

谢谢!

根据jenkins官方文档,你需要在tools部分声明maven:

pipeline {
    agent any
    tools {
        maven 'Maven 3.3.9'
        jdk 'jdk8'
    }
    stages {
        stage ('Initialize') {
            steps {
                sh '''
                    echo "PATH = ${PATH}"
                    echo "M2_HOME = ${M2_HOME}"
                '''
            }
        }

        stage ('Build') {
            steps {
                sh 'mvn clean package' 
            }
            post {
                success {
                    junit 'target/surefire-reports/**/*.xml' 
                }
            }
        }
    }
}

来源:https://www.jenkins.io/blog/2017/02/07/declarative-maven-project/

我认为你在 windows,所以更改:

sh 'mvn clean package' 

bat 'mvn clean package' 

此外,初始化步骤 可以帮助您确定您的 jenkins 是否配置正确。