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

Gradle发布到Maven生成带-plain后缀jar,Maven POM依赖无法正常引入

-plain后缀出现的原因

该后缀是org.springframework.boot Gradle插件的默认行为导致的:

  • 引入Spring Boot插件后,构建过程会默认生成两类JAR包
    • 无后缀的JAR:内置所有依赖的可执行Fat Jar,无法被其他项目作为普通依赖引入
    • 带-plain后缀的JAR:仅包含当前项目编译产物的普通JAR,可作为公共依赖被引用
  • 插件默认给普通JAR添加了plain分类器(classifier),发布到Maven仓库后,Maven依赖默认拉取无分类器的主构件,因此找不到对应可依赖的JAR包。
配置Gradle生成无-plain后缀的JAR

根据你的项目使用场景选择对应配置即可:

场景1:项目仅作为公共依赖库,不需要生成可执行Fat Jar

Groovy语法(build.gradle)

// 禁用可执行Fat Jar生成任务
bootJar.enabled = false

// 配置普通JAR任务清空分类器,去掉-plain后缀
jar {
    enabled = true
    archiveClassifier = ''
}

Kotlin DSL语法(build.gradle.kts)

tasks.getByName<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
    isEnabled = false
}

tasks.getByName<Jar>("jar") {
    isEnabled = true
    archiveClassifier.set("")
}

场景2:需要同时保留可执行Fat Jar和可依赖的普通JAR

在maven-publish插件的发布配置中指定主构件为普通JAR即可:

Groovy语法(build.gradle)

publishing {
    publications {
        mavenJava(MavenPublication) {
            // 指定发布普通JAR作为主构件
            from components.java
        }
    }
}

Kotlin DSL语法(build.gradle.kts)

publishing {
    publications {
        create<MavenPublication>("mavenJava") {
            from(components["java"])
        }
    }
}

配置完成后重新执行publishToMavenLocal任务,生成的JAR就不会带-plain后缀,其他Maven项目可以直接正常引入依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:36:04