使用Maven Publish插件发布Java Gradle项目到远程仓库,需启用插件、声明mavenJava出版物并配置components.java,添加withSourcesJar()和withJavadocJar(),在publishing.repositories中设置含credentials的远程URL,并执行./gradlew publish命令。

在 Java Gradle 项目中,使用 Maven Publish 插件将构建产物(如 JAR、sources、javadoc)发布到远程 Maven 仓库(如 Nexus、Artifactory 或 Maven Central),核心是配置 publishing 块并声明仓库地址与认证方式。
启用并基础配置 Maven Publish 插件
Gradle 6.8+ 默认包含该插件,只需在 build.gradle(或 build.gradle.kts)中启用:
plugins {
id 'maven-publish'
// 若需生成 javadoc/sources,确保 Java 插件已启用(通常默认存在)
}
插件启用后,Gradle 会自动为 java 项目创建 publishToMavenLocal 和 publish 等任务,但远程发布需额外配置仓库和发布内容。
定义要发布的组件与工件
默认情况下,java 插件提供 java 组件,它包含主 JAR、sources JAR 和 javadoc JAR。可显式声明以确保完整性:
立即学习“Java免费学习笔记(深入)”;
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
// 可选:显式添加 sources 和 javadoc(若组件未自动包含)
artifact sourcesJar
artifact javadocJar
}
}
}
其中 sourcesJar 和 javadocJar 需提前定义(Gradle 7.4+ 推荐用 withJavadocJar() 和 withSourcesJar()):
java {
withJavadocJar()
withSourcesJar()
}
配置远程仓库地址与认证信息
在 publishing.repositories 中添加仓库 URL,并通过 credentials 提供用户名/密码(或 token)。敏感信息不应硬编码,推荐从 gradle.properties 或环境变量读取:
- 在
~/.gradle/gradle.properties中添加:
mavenUsername=your-username mavenPassword=your-api-token-or-password
- 在
build.gradle中引用:
publishing {
repositories {
maven {
url = "https://your-nexus-server/repository/maven-releases/"
credentials {
username = project.findProperty("mavenUsername") ?: System.getenv("MAVEN_USERNAME")
password = project.findProperty("mavenPassword") ?: System.getenv("MAVEN_PASSWORD")
}
}
}
}
注意:发布快照(snapshot)时 URL 末尾通常为 /repository/maven-snapshots/;正式版(release)则对应 /repository/maven-releases/,且 Nexus/Artifactory 需开启相应策略(如 release 仓库要求 GPG 签名、版本号不含 -SNAPSHOT)。
执行发布命令
运行以下命令触发构建并上传:
./gradlew publish
若只发布到某个特定仓库,可用:
./gradlew publishMavenJavaPublicationToMavenRepository
成功后,可在目标仓库的 Web UI 或通过 curl 检查路径:groupId 转为路径(如 com.example → com/example),加上 artifactId、version 和文件名(如 mylib-1.0.0.jar)。


















