Gradle 中配置 maven-publish 上传 sources 和 javadoc JAR,需启用 Java/Android 插件、调用 withSourcesJar()/withJavadocJar() 声明工件,并通过 from components.java 或 components.release 挂载到出版物;Kotlin 项目若用 Dokka,需显式指定 javadocJar 输出路径。

Gradle 中配置 maven-publish 插件上传源码(sources JAR)和文档(Javadoc JAR),核心是声明对应工件并将其附加到出版物中。Java 和 Android 项目略有差异,但逻辑一致:生成 JAR、指定 classifier、挂载到 publication。
确保 Java 插件已启用
源码与文档打包依赖 java 插件提供的标准任务(sourcesJar 和 javadocJar)。大多数 Java/Kotlin 项目默认已启用,可确认 build.gradle 中存在:
-
plugins { id 'java' }(Groovy)或plugins { kotlin("jvm") } // + java 插件通常隐含 - 若使用 Android Gradle Plugin(AGP),则需确保
android插件已应用,它会自动提供androidSourcesJar等变体任务
声明 sources 和 javadoc 工件
Gradle 7.4+ 推荐使用内置 DSL 方式,简洁且兼容性好:
- Java 项目(Groovy):
java { withSourcesJar(); withJavadocJar() } - Android 项目(Groovy):
android { publishing { singleVariant("release") { withSourcesJar(); withJavadocJar() } } } - Kotlin 项目(Kotlin DSL):
java { withSourcesJar(); withJavadocJar() }
该写法会自动创建 sourcesJar 和 javadocJar 任务,并为它们设置正确 classifier("sources" / "javadoc"),无需手动定义 Jar task。
将工件挂载到 MavenPublication
在 publishing { publications { ... } } 块中,确保出版物基于 components.java(Java)或 components.release(Android),它已包含上述工件:
- Java 示例:
mavenJava(MavenPublication) { from components.java } - Android 示例:
release(MavenPublication) { from components.release }
只要 components.java 或 components.release 已启用 withSourcesJar() 和 withJavadocJar(),这些 JAR 就会自动作为附属 artifact 发布,无需额外 artifact 调用。
处理 Dokka(Kotlin 文档替代方案)
若项目使用 Dokka 生成 Kotlin 友好文档,需显式替换 javadocJar:
- 添加 Dokka 插件:
id "org.jetbrains.dokka" version "1.9.20" apply false - 在 publishing 块中指定:
javadocJar { archiveClassifier.set("javadoc"); from dokkaHtml.get().outputDirectory } - 或使用插件自动集成(如
com.vanniktech.maven.publish),它默认优先使用 Dokka 输出










