You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle多模块项目中Interceptor无法检测CommonUtils的外部依赖

Gradle多模块项目编译错误排查

项目结构

执行gradle projects命令得到如下结构:

gradle projects

CommonUtils为独立模块,Interceptor模块依赖CommonUtils。

Root project 'main-project'
+--- Project ':CommonUtils'
+--- Project ':Interceptor'
\--- Project ':SearchService'

问题现象

  • 主项目执行gradle build时,报错:
Task :Interceptor:compileJava FAILED
  • IntelliJ中无法识别以下两个导入语句:
    1. import com.google.gson.Gson;
    2. import com.rometools.rome.feed.rss.Channel;

模块配置文件

CommonUtils的build.gradle

plugins {
    id 'org.springframework.boot' version '2.2.0.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}
bootJar{
    enabled=false
}
jar{
    enabled=true
}
ext {
    set('springCloudVersion', "Hoxton.SR1")
}

processResources {
    def profile = (project.hasProperty('profile') ? project.profile : 'local').toLowerCase()
    include "**/"
    rename "bootstrap-${profile}.properties","bootstrap.properties"
    include "bootstrap.properties"
}
dependencies {
    implementation 'com.itextpdf:itextpdf:5.5.13.3'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter-config:2.2.0.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.755')
    implementation 'com.amazonaws:aws-java-sdk-s3'
    implementation 'com.amazonaws:aws-java-sdk-elasticsearch'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'com.amazonaws:aws-java-sdk-sns:1.11.847'
    implementation 'com.amazonaws:amazon-sqs-java-messaging-lib:1.0.4'
    implementation 'org.springframework.boot:spring-boot-starter-mail:2.2.0.RELEASE'
    implementation 'org.json:json:20160810'
    implementation 'com.googlecode.json-simple:json-simple:1.1'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'mysql:mysql-connector-java:8.0.13'
    implementation 'com.oracle.ojdbc:xmlparserv2:19.3.0.0'
    implementation 'org.jsoup:jsoup:1.13.1'
    implementation group: 'com.github.dozermapper', name: 'dozer-core', version: '6.5.0'
    implementation group: 'com.github.dozermapper', name: 'dozer-spring-boot-starter', version: '6.5.0'
    implementation group: 'com.itextpdf', name: 'itext7-core', version: '7.1.10', ext: 'pom'
    implementation group: 'com.itextpdf', name: 'html2pdf', version: '2.1.7'
    implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
    implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
    implementation group: 'io.micrometer', name: 'micrometer-registry-elastic', version: '1.1.4'
    implementation 'com.rometools:rome:1.18.0'
    implementation fileTree(dir: 'libs', include: '*.jar')
    implementation 'org.projectlombok:lombok:1.18.24'
    implementation 'rome:rome:1.0'
    annotationProcessor 'org.projectlombok:lombok:1.18.24'
    runtimeOnly('mysql:mysql-connector-java')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

Interceptor的build.gradle

plugins {
    id 'org.springframework.boot' version '2.2.0.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}
bootJar{
    enabled=false
}
jar{
    enabled=true
}
dependencies {
    implementation project(':CommonUtils')
    implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
    implementation 'org.apache.commons:commons-io:1.3.2'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
}

解决方案

问题根源在于Gradle的依赖配置作用域:CommonUtils中使用implementation声明的依赖,只会在自身编译时可见,不会传递给依赖它的Interceptor模块。而Interceptor中直接使用了CommonUtils依赖的Gson和Rome库,因此需要将这两个依赖的作用域改为api,让依赖可以向下传递。

修改CommonUtils的build.gradle中对应的依赖声明:

// 替换原来的implementation为api
api 'com.google.code.gson:gson:2.8.2'
api 'com.rometools:rome:1.18.0'

同时注意CommonUtils中重复声明了rome:rome:1.0,建议移除该冗余依赖,避免版本冲突。

修改完成后,重新执行gradle clean build即可解决编译错误,IntelliJ中的导入识别问题也会同步修复。

内容的提问来源于stack exchange,提问作者Eugene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:01:23