我想将Bamboo中的快照构建部署到Artifactory。我的存储库的Handle Snapshots
选项已经过检查,并且Maven Snapshot Version Behavior
设置为Unique
。存储库的布局为gradle-default
。
我的目标是在类似于以下位置部署工件的构建计划:
repo-local:com.company/project/1.0-SNAPSHOT/project-1.0-20120612.101600.txt
在Bamboo中,我有一个Artifactory Generic Deploy Task
,为Edit Published Artifacts
字段配置了以下内容:
project-1.0-SNAPSHOT.txt=>com.company/project/1.0-SNAPSHOT
然而,Artifactory拒绝我的构建工件,说The repository 'repo-local' rejected the artifact 'repo-local:com.company/project/1.0-SNAPSHOT/project-1.0-SNAPSHOT.txt' due to its snapshot/release handling policy.
如何让Artifactory接受工件并自动将SNAPSHOT
替换为文件名中的时间戳?
答案 0 :(得分:3)
您的问题很可能是您所选择的布局(gradle-default)不会将您部署的路径视为有效的集成修订。 gradle-default布局需要集成修订,如:
org/module/1.0-12345678912345/module-1.0-12345678912345.jar
即,在基础修订之后附加14位长的时间戳; 虽然您的路径包含 SNAPSHOT 而不是14位长的时间戳。
如果你想拥有像:
这样的模式com.company/project/1.0-SNAPSHOT/project-1.0-20120612.101600.txt
您必须自定义布局以接受 -SNAPSHOT 作为文件夹集成修订,并修改工件以包含时间戳作为文件集成修订。
我猜你的假设是Artifactory会将非独特的整合修订版转换成一个独特的版本;仅当存储库设置为默认的Maven布局并且工件遵循Maven的布局时,Artifactory才会执行此转换。
这是因为Maven实际上已经定义了集成修订标准,Gradle没有这样的标准;所以基本上,Gradle修订版几乎可以是任何东西。
最重要的是,Gradle世界中并不存在唯一和非唯一集成修订的概念,它实际上没有任何内置功能来支持这些功能;所以当你在Gradle中看到一个Mavenized路径时,它基本上就是模仿这个模式。