Java Gradle项目发布时Artifactory覆盖旧sources.jar而非生成新文件
问题分析与排查方案
针对SNAPSHOT版本的sources.jar被覆盖到旧构建时间节点的问题,可从以下几个方向排查:
1. 检查Gradle Artifactory插件的唯一版本配置
Gradle Artifactory插件默认会为SNAPSHOT版本生成带时间戳的唯一构件,但如果uniqueVersion被手动设为false,会导致新构件直接覆盖旧的同名文件,引发Artifactory中旧文件时间戳更新的现象。需在build.gradle中确认配置:
artifactory { publish { defaults { publications('mavenJava') publishArtifacts = true publishPom = true // 确保开启唯一版本生成(默认值为true,无需手动设置,但若被修改需改回) uniqueVersion = true } } }
同时确认maven-publish插件已正确配置sources构件:
java { withSourcesJar() } publishing { publications { mavenJava(MavenPublication) { from components.java } } }
2. 检查Artifactory仓库的SNAPSHOT处理规则
登录Artifactory后台,进入对应Maven仓库的配置页面,确认Handle Snapshots选项设置为Unique。若设为Non-Unique,Artifactory会允许新SNAPSHOT构件覆盖旧文件,而非生成新的时间戳版本目录。
3. 验证构建过程中的版本号生成
查看Jenkins构建日志中发布的jar完整文件名,正常的唯一SNAPSHOT构件应包含时间戳与构建编号(如fw-stringutil-main-20240615.123456-1-sources.jar)。若日志中显示的文件名无时间戳,说明Gradle未生成唯一版本,需排查插件配置或构建脚本中的版本号逻辑。
4. 排查插件与Gradle版本兼容性
Gradle 8.9与Artifactory插件5.2.3存在版本适配风险,尝试将Gradle Artifactory插件升级至最新稳定版(如5.3.0),重新构建发布后验证问题是否解决。
内容的提问来源于stack exchange,提问作者sasa
相关产品推荐
相关产品推荐

