本文是系列文章《Maven 源码解析:依赖调解是如何实现的?》第一篇,主要做个开头介绍。并为后续的实验做一些准备。系列文章总目录参见:https://www.cnblogs.com/xiaoxi666/p/15583241.html。
前言
相信久经沙场的 Java 开发同学们,一定对 Maven 这个工具不陌生。Maven 的依赖调解原则,便是经常聊到的话题。它是为了解决 groupId 和 artifactId 完全相同的依赖,应该取哪个版本号的问题。
下面列举出一些原则:
以上这些原则,你一定都知道,但你清楚 Maven 源码是如何实现它们的吗?
废话不多说,让我们准备进行实现,到 Maven 的源码世界逛逛!
实验环境
-
JDK 1.8
-
apache-maven-3.6.3(源码下载:https://archive.apache.org/dist/maven/maven-3/)
-
Maven3.6.3 的配套核心依赖 dependency:tree,包括两个项目:
-
maven-dependency-plugin-2.8(源码下载:https://archive.apache.org/dist/maven/plugins/)
-
maven-dependency-tree-2.1(源码下载:https://archive.apache.org/dist/maven/shared/)
简单说明一下:
-
dependency:tree 是 Maven 的核心依赖插件,它在依赖解析时发挥重要作用,平时我们也经常使用命令 mvn dependency:tree 输出目录树进行查看。这个插件由两部分组成,分别是 maven-dependency-plugin 和 maven-dependency-tree;前者包含了与「依赖」相关的多种插件,其中就包括 tree 插件;后者则是 tree 的具体实现。
为了进行实验,我们需要搭建一个 Demo 项目,并用 Maven 管理依赖包。该项目名称为 mavendependencyDemo,我们在其中创建五个模块 A、B、C、D、X。结构如下:
.
├── A
│ ├── pom.xml
├── B
│ ├── pom.xml
├── C
│ ├── pom.xml
├── D
│ ├── pom.xml
├── X
│ ├── pom.xml
├── pom.xml
后面我们会在分析每条原则时,修改不同模块的依赖。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。