Gradle多模块项目无法推送构件至mavenLocal的问题排查
Gradle多模块子项目发布到mavenLocal无构件问题排查
常见问题及修复方案
1. 执行了错误的发布任务
要发布单个子项目,必须指定子项目路径执行publishToMavenLocal,而非直接运行根项目的同名任务(根项目任务会发布所有子项目,若仅需单个需明确指定)。
- 示例命令:
./gradlew :你的子项目名称:publishToMavenLocal - 执行时留意控制台日志,确认是否出现该子项目的发布流程记录,比如
Publishing to Maven Local相关输出。
2. 找错了mavenLocal的路径
mavenLocal默认路径为用户主目录下的.m2/repository:
- Windows系统:
C:\Users\你的用户名\.m2\repository - Linux/macOS系统:
~/.m2/repository - 不确定路径时,可执行
./gradlew properties,查看mavenLocalRepository属性的值确认Gradle实际使用的路径。
3. 子项目未生成Jar包
发布任务依赖Jar生成任务,若子项目未生成Jar,自然没有构件可推送:
- 先执行
./gradlew :你的子项目名称:jar,前往子项目的build/libs目录检查是否生成对应Jar文件。 - 如果子项目是Spring Boot应用(哪怕未直接添加Spring Boot插件,但依赖了starter),需调整发布配置:
- 在子项目中添加
apply plugin: 'org.springframework.boot' - 修改publication配置,使用bootJar作为发布构件:
publishing { publications { mavenJava(MavenPublication) { artifact bootJar from components.java } } }
- 在子项目中添加
4. SNAPSHOT版本的路径差异
你的项目版本为1.0-SNAPSHOT,这类快照版本会存放在org/gagagag/[子项目名]/1.0-SNAPSHOT目录下,不要前往正式版本的目录查找。
快速验证步骤
- 执行子项目的
publishToMavenLocal任务,查看日志是否有Published mavenJava to Maven Local的成功提示。 - 打开mavenLocal对应路径,检查是否生成
.pom、.jar等相关文件。
内容的提问来源于stack exchange,提问作者Patan
相关产品推荐
相关产品推荐

