Gradle4.5升级至7.2报错:SoftwareComponentInternal不存在'java'属性
问题原因
这个报错是Gradle版本跨度过大导致的API不兼容问题:Gradle 4.x中components.java属于默认支持的动态属性访问方式,到Gradle 7.x版本中组件容器的实现逻辑调整,未显式注册的组件不会暴露动态属性,就会抛出找不到java属性的异常。
解决方案
按以下步骤依次排查修改:
- 第一步:确认
server子模块的build.gradle中已应用Java相关插件,保证Java组件被正确注册,添加如下配置(如果缺失的话):
plugins { // 普通Java应用用java插件,类库项目可以替换为java-library id 'java' id 'maven-publish' }
- 第二步:修改你当前报错的第118行代码,将动态属性访问改为显式下标访问,适配Gradle 7.x的API:
原代码:
from project(':server').components.java
修改后:
from project(':server').components["java"]
- 第三步:如果修改后还是报错,在根项目build.gradle的头部添加如下配置,保证解析发布配置前先完成
server子模块的配置加载:
evaluationDependsOn(':server')
修改完成后重新执行构建即可解决该异常。
内容的提问来源于stack exchange,提问作者PSing
相关产品推荐
相关产品推荐

