首页 > 解决方案 > 在 jenkins 管道 shell 命令中传递 maven 参数

问题描述

我对以下问题有疑问,有人可以帮我解决这个问题。

我想从 jenkins 管道中的 shell 传递 maven pom.xml 属性,需要用 maven 而不是 groovy 或 shell 替换。

例子:

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                sh 'mvn -Doracle.db.url=${db.url} package'
            }
        }
    }
}

这里的${db.url}应该被 maven setting.xml 文件属性中的 url 代替,而不是 Jenkins 管道中的 groovy 或 shell。我尝试了不同的组合,但它在 Jenkins 管道中给了我错误。

如果上面的 maven 属性是常量(一些常量 url),那么很容易传递,但是当我想传递任何变量属性(${db.url})时,我无法使用任何语法来传递。

标签: jenkinsjenkins-pipeline

解决方案


如果你想让 maven 进行评估${db.url},它必须像

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                sh 'mvn -Doracle.db.url=\\${db.url} package'
            }
        }
    }
}

现在,如果您看到,Jenkins 将像这样准备 maven 命令-

在此处输入图像描述

如果你不逃避它会给你Bad substitution错误


推荐阅读