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

Jenkins Pipeline中如何用Groovy将参数写入JSON文件供Jar调用

Jenkins Pipeline 写入构建参数到JSON的实现说明

现有代码的问题修正

  • 参数名不匹配:你在pipeline中定义的参数是IP、PASSWORD、NAME,但你写的代码中引用的参数名是MX_IP、MX_PASSWORD、POLICY_NAME,参数名不一致会导致读取参数失败
  • 不需要套node{}块:你当前使用的是声明式Pipeline,writeJSON是Jenkins Pipeline Utility Steps插件提供的内置方法,直接在steps中使用即可,不需要额外嵌套node块
  • 提前确认插件:确保你的Jenkins已经安装了Pipeline Utility Steps插件,否则writeJSON方法无法正常调用

插入位置说明

你需要把生成JSON的逻辑放在构建完成后、运行Jar包前,建议单独新增一个阶段管理配置生成逻辑,便于后续维护。

修正后的代码示例

单独新增的生成配置阶段代码

stage('生成运行配置文件') {
    steps {
        script {
            def data = [
                attachments:[
                    [
                        mxIp : params.IP,
                        mxPassword : params.PASSWORD,
                        policyName : params.NAME,
                    ]
                ]
            ]
            writeJSON(file: 'parameters.json', json: data)
            // 可选:打印文件内容验证生成结果
            sh 'cat parameters.json'
        }
    }
}

插入到原有Jenkinsfile的位置

将上述阶段放在Build阶段和run阶段之间即可,示例如下:

stage('Build') {
    steps {
        sh 'mvn install'
    }
}
// 新增的生成配置阶段放在这里
stage('生成运行配置文件') {
    steps {
        script {
            def data = [
                attachments:[
                    [
                        mxIp : params.IP,
                        mxPassword : params.PASSWORD,
                        policyName : params.NAME,
                    ]
                ]
            ]
            writeJSON(file: 'parameters.json', json: data)
            sh 'cat parameters.json'
        }
    }
}

stage('run') {
    steps {
        sh 'java -jar /var/lib/jenkins/workspace/create_pass_criteria/target/create_pass_criteria-8.0.125-SNAPSHOT.jar'
    }
}

额外注意事项

  • 生成的parameters.json默认保存在Jenkins任务的当前工作空间根目录,你要确保Jar包读取配置文件的路径和生成路径一致,也可以在writeJSON的file参数中写绝对路径固定文件位置
  • 如果无法安装Pipeline Utility Steps插件,也可以用原生shell命令生成JSON,示例如下:
stage('生成运行配置文件') {
    steps {
        sh '''
        cat > parameters.json << EOF
        {
            "attachments": [
                {
                    "mxIp": "${params.IP}",
                    "mxPassword": "${params.PASSWORD}",
                    "policyName": "${params.NAME}"
                }
            ]
        }
        EOF
        '''
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:39:02