我正在尝试发布新的Maven项目版本以进行强制。 经过大量研究(如果我做错了,请纠正我),但是我没有找到任何有帮助的示例,因此我尝试手动进行操作-表示我正在更改pom.xml文件上的版本并尝试使用p4publish提交。
这些是相关的阶段:
stage('change pom version Release')
{
steps
{
withCredentials([usernamePassword(credentialsId: REPOSITORY_CREDENTIALS_ID, passwordVariable: 'artifactory_password', usernameVariable: 'artifactory_user')]){
script {
pom = readMavenPom file: 'main_project/pom.xml'
pom.version = "${RELEASE_DATE}"
writeMavenPom model: pom
def inside_project_pom = readMavenPom file: main_project/inside_project/pom.xml'
inside_project_pom.parent.version = "${RELEASE_DATE}"
writeMavenPom model: inside_project_pom
}
}
}
}
stage('publish')
{
steps
{
p4publish(
credential: 'PERFORCE_CREDENTIALS_ID',
publish: [$class: 'SubmitImpl', delete: false, description: 'Submitted by Jenkins. Build: ${BUILD_TAG}', onlyOnSuccess: false, reopen: false],
workspace: [
$class: 'ManualWorkspaceImpl',
charset: 'none',
name: 'jenkins-${JOB_NAME}-submit',
pinHost: false,
spec: [
allwrite: true,
clobber: false,
compress: false,
line: 'LOCAL',
locked: false,
modtime: false,
rmdir: false,
streamName: '//PROJECT_LOCATION_ON_PERFORCE',
view: '',
serverID: '',
type: 'WRITABLE'
]
])
}
}
我的项目层次结构是:
PROJECT_LOCATION_ON_PERFORCE:
main_project:
inside_project:
....
pom.xml
...
pom.xml
....
pom.xml
我想更改列表上的前2个pom,但是在Jenkins上运行此命令后,只有外部pom会获取新版本(尽管我没有更改他的pom)。
我在做什么错? 你能帮我吗? 谢谢!
答案 0 :(得分:3)
我不了解Perforce,但是您可以简单地使用Maven Versions Plugin's set
goal而不是手动更改所有pom文件。它对项目结构有更深入的了解,因此可以为您省去一些问题。
sh "mvn versions:set -DnewVersion=${RELEASE_DATE}"
应该可以解决问题。