解决Springboot2中依赖本地项目Gradle5编译异常问题
问题描述
在Idea
中使用gradle5
配置springboot2
项目,该项目下有两个子项目,如:Project {subA, subB}
,其中subA
项目依赖subB(非springboot项目)
项目implementation project(':subB')
,在使用gradle build
时,控制台抛出类似如下异常:
1 | /Users/xxxx/xxx/xxx/solby/xboot/src/main/java/me/solby/xboot/tookit/aspect/RequestLimitAspect.java:6: 错误: 程序包me.solby.xoauth.common不存在 |
该类异常表示找不到类所在包,但是通过idea
的方式编译或运行,都不会有问题。
根项目build.gradle
配置如下:
1 | plugins { |
问题排查
开始时以为是gradle
依赖找不到,但是代码不报错,idea
中也正常,看了好几天也没找到原因。突然在某一天的晚上,看到了springboot
的这个issue
: Gradle multi-project build dependencies of subprojects cannot be resolved #11594,发现srpingboot
插件spring-boot-gradle-plugin
对dependency-management-plugin
具有可传递的依赖关系,因此,如果在spring-boot-gradle-plugin
上添加依赖项,则将使用所使用的版本将dependency-management-plugin
自动添加到构建脚本的类路径中通过引导,然后可以像通常一样应用和配置它。
综合分析,该问题是由于spring
插件问题引起的,且只会出现在依赖非srping
项目时,因此,通过mavenBom
的方式进行springboot
依赖的管理。
问题解决
修改根项目build.gradle
配置文件:
1 | buildscript { |
关于io.spring.dependency-management
插件的引入,根据传递依赖,可以使用org.springframework.boot
替代。
- 本文链接: https://acehjm.github.io/2019/11/04/解决Springboot2中依赖本地项目Gradle5编译异常问题/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!