Gradle Maven Publish Plugin 配置指南:发布内容详解
前言
在Java/Kotlin项目开发中,将库发布到Maven仓库是常见的需求。vanniktech/gradle-maven-publish-plugin是一个强大的Gradle插件,它简化了将项目发布到Maven仓库的过程。本文将详细介绍如何配置该插件来发布不同类型的项目。
支持的Gradle插件类型
该插件支持多种Gradle插件项目的发布配置:
- Android库项目(单变体或多变体)
- Kotlin JVM项目
- Kotlin多平台项目
- Java库项目
- Gradle插件项目
- Java平台项目
- 版本目录项目
Android库项目配置
多变体发布
对于使用com.android.library插件的项目,可以发布所有变体或指定子集:
mavenPublishing {
configure(new AndroidMultiVariantLibrary(
true, // 是否发布源码jar
true, // 是否发布javadoc jar
["beta", "release"], // 指定发布的构建类型
["store": ["google", "samsung"]] // 指定发布的风味维度
))
}
关键参数说明:
- 源码jar:包含项目源代码,方便开发者查看实现
- Javadoc jar:包含API文档
- 构建类型:如debug/release等
- 风味维度:Android项目的多渠道配置
单变体发布
如果只需要发布特定变体:
mavenPublishing {
configure(AndroidSingleVariantLibrary(
variant = "release", // 指定发布的变体
sourcesJar = true,
publishJavadocJar = true
))
}
Java/Kotlin项目配置
Java库项目
mavenPublishing {
configure(new JavaLibrary(
new JavadocJar.Javadoc(), // 发布标准Javadoc
true // 发布源码jar
))
}
Javadoc选项:
None():不发布Empty():发布空jarJavadoc():标准Javadoc
Kotlin JVM项目
mavenPublishing {
configure(KotlinJvm(
javadocJar = JavadocJar.Dokka("dokkaHtml"), // 使用Dokka生成文档
sourcesJar = true
))
}
注意:Kotlin项目推荐使用Dokka工具生成文档,它比标准Javadoc更适合Kotlin语言特性。
Kotlin多平台项目
mavenPublishing {
configure(new KotlinMultiplatform(
new JavadocJar.Dokka("dokkaHtml"),
true,
["debug", "release"] // 指定发布的Android变体
))
}
特点:
- 自动处理多平台项目的复杂性
- 可以为Android目标指定发布的变体
- 源码发布总是启用
Gradle插件项目
普通Gradle插件
mavenPublishing {
configure(GradlePlugin(
javadocJar = JavadocJar.Javadoc(),
sourcesJar = true
))
}
Gradle插件门户发布
使用com.gradle.plugin-publish插件时:
mavenPublishing {
configure(new GradlePublishPlugin())
}
注意:这种情况下会自动发布源码和文档jar。
特殊项目类型
Java平台项目
用于BOM(物料清单)类型的发布:
mavenPublishing {
configure(JavaPlatform())
}
版本目录项目
用于发布版本目录:
mavenPublishing {
configure(new VersionCatalog())
}
最佳实践建议
- 源码发布:建议始终启用,方便其他开发者调试
- 文档发布:
- Java项目使用标准Javadoc
- Kotlin项目使用Dokka
- Android变体:生产环境通常只发布release变体
- 多平台项目:注意检查各平台的发布配置
总结
vanniktech/gradle-maven-publish-plugin提供了灵活的配置选项,可以满足各种类型项目的发布需求。通过本文介绍的配置方法,开发者可以轻松地将项目发布到Maven仓库,同时提供源码和文档支持,提升库的可用性和专业性。
根据项目类型选择合适的配置方式,并考虑实际需求决定发布哪些附加内容(源码、文档等),可以使你的库更易于被其他开发者使用和维护。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



