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

多模块Gradle项目发布Artifactory依赖解析失败与-plain后缀去除问题

问题原因

  1. 根目录build.gradle的allprojects块给所有模块都应用了org.springframework.boot插件,从Spring Boot 2.5版本开始,该插件默认会构建两类jar包:
    • 可执行fat jar:包名不带后缀,包含项目所有依赖和启动引导类,无法作为普通依赖被其他项目引入
    • 普通Java库jar:包名带-plain后缀,仅包含当前模块编译后的类文件,可作为依赖引入
  2. 你当前的Maven发布配置里使用from(components.java),默认发布的是带-plain后缀的普通jar,但pom/module元数据里没有配置对应的classifier,导致其他项目依赖时找不到无后缀的jar包,因此解析失败。

解决方法

推荐优先使用方案1,改造成本最低:

方案1:仅调整API模块配置

在admin-api模块的build.gradle中添加如下配置,禁用Boot插件的可执行jar构建逻辑,同时去掉普通jar的-plain后缀:

bootJar {
    enabled = false // 公共依赖模块不需要打可执行jar,直接禁用
}

jar {
    enabled = true
    archiveClassifier = '' // 移除plain后缀
}

修改后重新执行artifactoryPublish任务,上传的jar就会变为admin-api-0.0.2-RC3.jar,其他项目的依赖声明不需要任何修改即可正常解析。

方案2:调整全局配置

如果你的项目中只有少数模块是可启动的Spring Boot应用,其余都是公共依赖模块,可以把allprojects块里的apply plugin: 'org.springframework.boot'配置移到具体的应用模块build.gradle中,公共模块不需要应用该插件,自然不会生成带-plain后缀的jar。

临时兼容方案

如果暂时不想修改发布配置,也可以在依赖时指定classifier为plain即可正常拉取:

dependencies {
    compileOnly('com.example:admin-api:0.0.2-RC3:plain')
}

内容的提问来源于stack exchange,提问作者Chirag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:57:00