在上一个项目中遇到的一些jar包裹冲突的问题,之后很多人都不清楚dependencies与dependencyManagement本文总结了这些差异。
1、DepencyManagement应用场景
当我们有很多项目模块时,我们使用Maven管理项目非常方便,可以帮助我们管理生成、文档、报告、依赖项以及scms出版和发行的方法。您可以轻松地编译代码、管理依赖项、管理二进制库等。
因为我们有许多模块,所以我们有另一层抽象层并提取出一层。itoo-base-parent管理子项目的公共依赖性。为使项目正确运行,所有子项目必须使用统一版本的依赖项,并且必须确保应用程序的每个项目的依赖项和版本一致,以确保测试结果和发布的结果相同。
在我们项目的顶层POM档案,我们会看到的dependencyManagement元素。通过其元素进行管理jar包的版本,以便子项目引用列出的依赖于它的版本号,而不显示它。Maven将向上提升父子级别,直到您找到一个dependencyManagement元素,然后将在此中使用它。dependencyManagement元素中指定的版本号。
让我们来看看我们项目中的应用程序:
pom继承图:
依赖关系:
Itoo-base-parent(pom.xml)
org.eclipse.persistence
org.eclipse.persistence.jpa
${org.eclipse.persistence.jpa.version}
provided
javax
javaee-api
${javaee-api.version}
Itoo-base(pom.xml)
itoo-base-parent
com.tgb
0.0.1-SNAPSHOT
../itoo-base-parent/pom.xml
4.0.0
itoo-base
ejb
javax
javaee-api
com.fasterxml.jackson.core
jackson-annotations
org.eclipse.persistence
org.eclipse.persistence.jpa
provided
这样做的好处是:统一管理项目版本号,确保项目的应用依赖和版本一致,从而确保测试和发布的结果是相同的,因此,在顶层。pom常见依赖项在中定义。同时,您可以避免在使用的每个子项目中声明版本号,因此如果您想升级或切换到另一个版本,只需要在父容器中更新,而不需要修改任何子项目。如果子项目需要另一个版本号,则只需dependencies在中声明版本号。子类将使用子类声明的版本号,而不继承父类的版本号。
2、Dependencies
相对于dependencyManagement,所有的生命在dependencies依赖项是自动引入的,并且默认情况下由所有子项目继承。
3、区别
dependencies即使没有在子项目中写入依赖项,子项目仍将继承父项目的依赖项(全部继承)
dependencyManagement子项目需要显示声明需要使用的依赖项。如果子项目中未声明依赖项,则不会从父项目继承该依赖项;version和scope所有内容均从父级读取pom;此外,如果在子项目中指定了版本号,jar版本。
4、Maven约定比配置更好。
它引入这一概念是为了在不进行不必要配置的情况下为项目提供合理的默认行为。提供了默认目录。
src ——> 源代码和测试代码的根。
main 应用程序代码的源目录。
java 源代码
resources 项目的资源文件
test 测试代码的源目录。
java 测试代码
resources 用于测试的资源文件
target 编译的类文件,jar文件等
对于Maven约定比配置更好。的理解,一方面对于小型项目基本满足我们的需要基本不需要自己配置东西,使用Maven配置良好,可以快速使用,降低了学习成本。另一方面,对于那些不符合我们需求的,我们也可以定制设置,这体现了灵活性。配置大大减少,随着项目变得更加复杂,这一优势变得更加明显。
————————————————
版权声明:本文是CSDN博主「\_Emily“原文,跟上。 CC 4.0 BY-SA 版权协议,转载请附上原始来源链接和本声明。
原始链接:https://blog.csdn.net/liutengteng130/article/details/46991829
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除