Artifactory中-SNAPSHOT被替换为时间戳由哪些配置变量控制?
差异原因分析
- 构建工具的发布配置差异:如果使用Maven进行构建发布,项目pom.xml的
snapshotRepository配置项中,<uniqueVersion>参数会直接控制SNAPSHOT版本的生成规则,配置为true时会自动生成带时间戳的唯一版本,配置为false时会保留原-SNAPSHOT后缀。如果使用Gradle的maven-publish插件,对应的uniqueVersion参数也会产生相同影响,两个项目的构建脚本该配置不一致就会出现上述差异。 - CI上传步骤的参数差异:哪怕是同一条流水线,若两个构件的上传逻辑分离,使用JFrog CLI、curl等工具上传时携带的参数不同也会触发该问题:比如第一个构件上传时携带了时间戳相关的矩阵参数,或者开启了SNAPSHOT版本自动唯一化的开关,第二个构件上传时没有对应配置。
- 构建激活的Profile差异:如果两个项目构建时激活的Maven/Gradle Profile不同,部分Profile可能默认开启了SNAPSHOT版本唯一化的配置,也会导致最终上传后的文件名不一致。
解决方案
要避免SNAPSHOT后缀被自动替换为时间戳,可按以下优先级调整配置:
- 统一构建工具的发布配置
- Maven项目在pom.xml的快照仓库配置中显式关闭唯一版本生成:
<distributionManagement> <snapshotRepository> <id>artifactory-snapshots</id> <url>你的Artifactory快照仓库地址</url> <uniqueVersion>false</uniqueVersion> </snapshotRepository> </distributionManagement>- Gradle项目在
maven-publish插件配置中显式关闭唯一版本生成:
publishing { repositories { maven { url "你的Artifactory快照仓库地址" uniqueVersion = false } } } - 统一CI上传参数:使用JFrog CLI上传时增加
--snapshot=keep参数,直接保留原SNAPSHOT文件名;使用原生API上传时,不要在请求URL中拼接时间戳相关的矩阵参数,直接用原文件名上传即可。 - 对齐构建激活的Profile:确认两个项目构建时的激活Profile一致,关闭会触发SNAPSHOT版本唯一化的Profile配置。
内容的提问来源于stack exchange,提问作者Dreamer
相关产品推荐
相关产品推荐

