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

Gradle 如何将传递依赖随自定义库一同部署并被上层应用正确引用

多模块项目依赖传递配置方案

适用场景

MyApp、MyLibrary1、MyLibrary2同属一个根项目的单仓多模块架构,需要让MyApp依赖MyLibrary1时自动获取其依赖的MyLibrary2,避免运行时类缺失报错。

1. Maven 项目配置

配置MyLibrary1的pom.xml

在MyLibrary1的依赖声明中,确保MyLibrary2的依赖scope为默认的compile,不要设置为provided:

<dependencies>
    <dependency>
        <groupId>替换为你的项目groupId</groupId>
        <artifactId>MyLibrary2</artifactId>
        <version>替换为你的项目统一版本号</version>
        <!-- 无需额外声明scope,默认compile即可传递该依赖到上层项目 -->
    </dependency>
</dependencies>

配置MyApp的pom.xml

仅需声明MyLibrary1的依赖即可:

<dependencies>
    <dependency>
        <groupId>替换为你的项目groupId</groupId>
        <artifactId>MyLibrary1</artifactId>
        <version>替换为你的项目统一版本号</version>
    </dependency>
</dependencies>

2. Gradle 项目配置

配置MyLibrary1的build.gradle

使用api关键字声明MyLibrary2依赖,不要使用implementation:

dependencies {
    // api声明的依赖会自动传递给所有依赖当前库的项目
    api project(':MyLibrary2')
}

配置MyApp的build.gradle

仅需声明MyLibrary1的依赖即可:

dependencies {
    implementation project(':MyLibrary1')
}

异常排查

如果配置后仍然报类缺失错误,可按以下步骤验证:

  • 查看依赖树确认传递正常:
    • Maven在MyApp目录执行mvn dependency:tree,检查输出中是否包含MyLibrary2
    • Gradle在MyApp目录执行./gradlew dependencies(Windows执行gradlew.bat dependencies),检查runtimeClasspath下是否包含MyLibrary2
  • 确认三个模块的版本号一致,无版本冲突导致MyLibrary2被自动排除
  • 清理构建缓存后重新编译:Maven执行mvn clean install,Gradle执行./gradlew clean build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:07