java - 带有子项目的 Jenkins Artifactory 插件文件规范
问题描述
我正在使用带有Artifactory 插件的 Jenkins来发布工件。
我使用 Java 和 Gradle 构建应用程序。按照惯例,工件位于build/libs/
文件夹中。如果我有多模块项目,则使用指定的文件规范发布。
root
|--proj1
|--proj2
|--...
File Specs 模式看起来像(注意 com.rivancic 是 Artifactory 存储库的组):
"files": [
{
"target": "test-repo/com/rivancic/{1}/1.0.0/{2}-1.0.0{3}",
"pattern": "/home-dir/com/rivancic/(*)/build/libs/(*)-1.0.0(*)"
}
]
此处将第一个通配符解析为proj1
orproj2
并将工件上传到特定模块。
问题
我面临的问题是在将多模块项目与嵌套项目一起使用时。
root
|--proj1
|--subproj11
|--subproj12
|--proj2
|--...
现在对于第一个 subproject11 使用相同的模式,第一个通配符被解析为proj1/subproj11
而不是 only subproj11
。这解决了无效的工件模块名称和 Artifactory 抛出异常
java.lang.RuntimeException: java.io.IOException: Failed to deploy file. Status code: 409 Response message: Artifactory returned the following errors:
The target deployment path 'com/rivancic/project1/subproject11/1.0.0/subproject11-1.0.0.pom' does not match the POM's expected path prefix 'com/rivancic/subproject11/1.0.0'. Please verify your POM content for correctness and make sure the source path is a valid Maven repository root path. Status code: 409
有没有一种方法可以在 File Specs 中定义一个模式,它总是只采用路径的最后一部分,即最终的子项目,而不是上述结构的整个路径