You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:56:22