带有子项目的 Jenkins Artifactory 插件文件规范
Jenkins Artifactory Plugin File Specs with subprojects
我正在使用 Jenkins 和 Artifactory plugin 来发布工件。
我使用 Java 和 Gradle 构建应用程序。按照惯例,工件位于 build/libs/
文件夹中。如果我有多模块项目,则可以使用指定的文件规范进行发布。
root
|--proj1
|--proj2
|--...
文件规范模式看起来像(注意 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
或 proj2
,工件被上传到特定模块。
问题
我遇到的问题是将多模块项目与 嵌套项目.
一起使用时
root
|--proj1
|--subproj11
|--subproj12
|--proj2
|--...
现在,第一个子项目 11 使用相同的模式,第一个通配符被解析为 proj1/subproj11
,而不仅仅是 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 中定义一个模式,它总是只采用路径的最后一部分,即最终的子项目,而不是上述结构的整个路径
您可以使用 2 个不同的文件规范或 2 个不同的文件规范组:一个用于多模块,另一个用于多项目。
对于多项目,使用以下示例:
"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(*)"
}
]
解释 -
在规范的 /*/(*)
部分,第一个星号被解析为常规通配符,括号中的星号用作 Placeholder.
有关文件规范的更多信息,请参见 Using File Specs。
我正在使用 Jenkins 和 Artifactory plugin 来发布工件。
我使用 Java 和 Gradle 构建应用程序。按照惯例,工件位于 build/libs/
文件夹中。如果我有多模块项目,则可以使用指定的文件规范进行发布。
root
|--proj1
|--proj2
|--...
文件规范模式看起来像(注意 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
或 proj2
,工件被上传到特定模块。
问题
我遇到的问题是将多模块项目与 嵌套项目.
一起使用时root
|--proj1
|--subproj11
|--subproj12
|--proj2
|--...
现在,第一个子项目 11 使用相同的模式,第一个通配符被解析为 proj1/subproj11
,而不仅仅是 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 中定义一个模式,它总是只采用路径的最后一部分,即最终的子项目,而不是上述结构的整个路径
您可以使用 2 个不同的文件规范或 2 个不同的文件规范组:一个用于多模块,另一个用于多项目。
对于多项目,使用以下示例:
"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(*)"
}
]
解释 -
在规范的 /*/(*)
部分,第一个星号被解析为常规通配符,括号中的星号用作 Placeholder.
有关文件规范的更多信息,请参见 Using File Specs。