需启用maven-publish插件,声明mavenJava出版物并配置components.java、withSourcesJar()和withJavadocJar(),在publishing.repositories中设置含动态URL与凭证的远程仓库,最后执行./gradlew publish命令。

要让 Gradle 把 JAR、sources、javadoc 等构件推送到远程 Maven 仓库(比如 Nexus、Artifactory 或私有仓库),核心是正确配置 maven-publish 插件,明确发布什么、发到哪、怎么认证。
启用插件并声明出版物
确保 Java 插件已启用(通常默认存在),然后启用发布插件:
- 在
build.gradle中添加:plugins { id 'maven-publish' } - 定义出版物,基于
components.java,自动包含主 JAR;再显式加上源码和文档包:publishing { publications { mavenJava(MavenPublication) { from components.java withSourcesJar() withJavadocJar() } } }
配置远程仓库地址与凭证
仓库 URL 必须是完整路径(如 https://nexus.example.com/repository/maven-releases/),不能只写域名;认证信息不建议硬编码,推荐用 gradle.properties 或环境变量注入:
- 在
publishing.repositories块中写:maven { url = "https://your-remote-repo-url" credentials { username = project.findProperty("repoUsername") ?: System.getenv("REPO_USER") password = project.findProperty("repoPassword") ?: System.getenv("REPO_PASS") } } - 对应在
~/.gradle/gradle.properties里加:repoUsername=your_user<br>repoPassword=your_pass
区分快照与正式版本(可选但推荐)
避免误发 SNAPSHOT 到 releases 仓库,可用版本号后缀动态切换 URL:
url = uri(if (version.toString().endsWith("-SNAPSHOT")) "https://repo.example.com/snapshots" else "https://repo.example.com/releases")- 这样
1.2.0-SNAPSHOT自动走 snapshots 路径,1.2.0走 releases 路径
执行发布命令
确认配置无误后,运行:
-
./gradlew publish—— 推送所有 publication 到配置的远程仓库 -
./gradlew publishMavenJavaPublicationToMyRepoRepository—— 如果指定了仓库名myRepo,可用此精确任务 - 首次推送前建议先跑
./gradlew build确保构件生成成功

















