在 Java(尤其是使用 Maven 或 Gradle 等构建工具) 中,传递依赖(Transitive Dependency) 指的是:
你直接引入的依赖所“顺带”依赖的其他库,会自动被引入到你的项目中。
假设你写了一个 Java 项目:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.30</version>
</dependency>
你只写了 spring-web 这一个依赖,但:
spring-corespring-jcl这些 你没写,但被自动带进来的依赖,就是 传递依赖。
✅ 你不用手动写 spring-core、spring-jcl
Java 项目通常是“分层”的:
你的项目
└─ spring-web
└─ spring-core
└─ spring-jcl
Maven / Gradle 会根据 依赖的 pom.xml / 元数据 自动解析整棵依赖树。
mvn dependency:tree
输出示例:
com.example:demo:jar:1.0
└─ org.springframework:spring-web:5.3.30
├─ org.springframework:spring-core:5.3.30
│ └─ org.springframework:spring-jcl:5.3.30
不同库依赖 同一个库的不同版本:
A → log4j 1.2
B → log4j 2.0
Maven 会按“就近原则”选一个版本。
一个简单项目可能引入上百个 jar。
传递依赖中可能包含:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.30</version>
</dependency>
dependencyManagement统一版本管理(Spring Boot 常用)。
Java 的传递依赖 = 你引入 A,A 依赖的 B、C 自动进项目
它是构建工具的核心机制,用得好省事,用不好容易“依赖地狱”。
如果你愿意,我也可以用 Gradle 示例 或 实际项目案例 再讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。