【第十五篇】-|【第十五篇】- Maven 依赖管理之Spring Cloud直播商城 b2b2c电子商务技术总结
Maven 依赖管理
Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。
可传递性依赖发现
一种相当常见的情况,比如说 A 依赖于其他库 B。如果,另外一个项目 C 想要使用 A ,那么 C 项目也需要使用库 B。
Maven 可以避免去搜索所有所需库的需求。Maven 通过读取项目文件(pom.xml),找出它们项目之间的依赖关系。
我们需要做的只是在每个项目的 pom 中定义好直接的依赖关系。其他的事情 Maven 会帮我们搞定。
通过可传递性的依赖,所有被包含的库的图形会快速的增长。当有重复库时,可能出现的情形将会持续上升。Maven 提供一些功能来控制可传递的依赖的程度。
文章图片
依赖范围
传递依赖发现可以通过使用如下的依赖范围来得到限制:
文章图片
依赖管理
通常情况下,在一个共通的项目下,有一系列的项目。在这种情况下,我们可以创建一个公共依赖的 pom 文件,该 pom 包含所有的公共的依赖关系,我们称其为其他子项目 pom 的 pom 父。 接下来的一个例子可以帮助你更好的理解这个概念。
接下来是上面依赖图的详情说明:
App-UI-WAR 依赖于 App-Core-lib 和 App-Data-lib。
Root 是 App-Core-lib 和 App-Data-lib 的父项目。
Root 在它的依赖部分定义了 Lib1、lib2 和 Lib3 作为依赖。
App-UI-WAR 的 pom.xml 文件代码如下:
4.0.0
com.companyname.groupname
App-UI-WAR
1.0 war
com.companyname.groupname
App-Core-lib
1.0
com.companyname.groupname
App-Data-lib
1.0
App-Core-lib 的 pom.xml 文件代码如下:
Root
com.companyname.groupname
1.0
4.0.0
com.companyname.groupname
App-Core-lib
1.0 jar
App-Data-lib 的 pom.xml 文件代码如下:
Root
com.companyname.groupname
1.0
4.0.0
com.companyname.groupname
App-Data-lib
1.0 jar
【【第十五篇】-|【第十五篇】- Maven 依赖管理之Spring Cloud直播商城 b2b2c电子商务技术总结】Root 的 pom.xml 文件代码如下:
4.0.0
com.companyname.groupname
Root
1.0 pom
com.companyname.groupname1
Lib1
1.0
com.companyname.groupname2
Lib2
2.1
com.companyname.groupname3
Lib3
1.1
现在当我们构建 App-UI-WAR 项目时, Maven 将通过遍历依赖关系图找到所有的依赖关系,并且构建该应用程序。
通过上面的例子,我们可以学习到以下关键概念:
公共的依赖可以使用 pom 父的概念被统一放在一起。App-Data-lib 和 App-Core-lib 项目的依赖在 Root 项目里列举了出来(参考 Root 的包类型,它是一个 POM).
没有必要在 App-UI-W 里声明 Lib1, lib2, Lib3 是它的依赖。 Maven 通过使用可传递的依赖机制来实现该细节。
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘