maven - 具有自定义 settings.xml 的 Jenkins 声明式管道
问题描述
我正在尝试使用 Maven建立一个 Jenkins声明式管道。到目前为止,我可以让 maven 运行,但我无法让它使用我定义的 Maven Settings.xml。
pipeline{
agent any
tools{
maven 'Apache Maven 3.3'
// without mavenSettingsConfig, my settings.xml is not used. With it, this blows up
mavenSettingsConfig: 'Global Maven Settings'
jdk 'jdk9
}
stages {
stage('Preparation'){
steps{
//code checkout stuff here--this works fine
}
}
stage('Build'){
steps{
sh "mvn clean install -P foo"
}
}
}
}
问题似乎是 mavenSettingsConfig。如果没有该属性,我无法弄清楚如何设置 settings.xml,并且我的自定义 maven 东西不起作用。(例如,配置文件 foo。)使用 mavenSettingsConfig,它会爆炸:
漏洞!源单元“WorkflowScript”中“规范化”阶段的异常意外 NullpointerException....
该文档中有一个很大的 TODO,它将为此提供一个示例!那么我该怎么做呢?
(文档 TODO 在https://wiki.jenkins.io/display/JENKINS/Pipeline+Maven+Plugin。它实际上说“TODO 提供了一个带有 Jenkins 声明式管道的示例”)
解决方案
我的建议是使用 Config File Provider 插件:https ://wiki.jenkins.io/display/JENKINS/Config+File+Provider+Plugin
使用它,您可以在 Jenkins 的“配置文件管理”屏幕中定义一次配置文件,然后在您的管道中使用如下代码:
stage('Build'){
steps{
configFileProvider([configFile(fileId: 'my-maven-settings-dot-xml', variable: 'MAVEN_SETTINGS_XML')]) {
sh 'mvn -U --batch-mode -s $MAVEN_SETTINGS_XML clean install -P foo'
}
}
}
希望能帮助到你
推荐阅读
- ios - 在 xcode 12 中创建通用框架时出现 Lipo 错误
- azure-devops - Sprint 177(2020 年 10 月 21 日)发布日期?
- scala - 迭代地图以创建另一个地图
- inno-setup - 在多个 Inno Setup 脚本常量出现中重用相同(随机)值
- kubernetes - 使用 Shell 脚本在 ConfigMap 中创建 Secret
- html - 使用 jQuery 向 localStorage 添加暗模式样式表
- go - 在 go 中使用 struct 作为包装器
- flutter - 无法在初始化程序中访问小部件
- json - 如何在bash中使用带有嵌入引号的位置参数?
- python - 基于两个条件的子集数据集,将每个数据框保存到 .csv 文件中,遍历每个文件并绘制图形