【问题标题】:Jenkins Multibranch Pipeline - mvn is not recognized as a commandJenkins Multibranch Pipeline - mvn 未被识别为命令
【发布时间】:2020-05-24 16:20:45
【问题描述】:

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

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

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

'mvn' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

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

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

谢谢!

【问题讨论】:

    标签: maven jenkins jenkins-pipeline multibranch-pipeline


    【解决方案1】:

    根据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 是否配置正确。

    【讨论】:

    • 谢谢,根据文档,我没有意识到有必要在单独的部分中明确列出这些工具。这解决了问题。
    • 不客气。如果这有助于解决您的问题,请使用左侧的复选标记将其标记为已解决和/或点赞。
    猜你喜欢
    • 2013-10-06
    • 2012-11-21
    • 2014-08-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多