Maven配置 dependencyManagement和dependencies的区别

    在Maven中经常遇到dependencyManagement和dependencies节点的配置,对于新手老是搞不懂他们的区别,经过查资料终于明白了,总结一下:

dependencyManagement

        Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用在这个dependencyManagement 元素中指定的版本号。
     例如在父项目里:

		
			
				junit
				junit
				4.12
			
		
	
      然后在子项目里就可以添加junit依赖时可以不指定版本号,例如:
      

		
			junit
			junit
			test
		
	
       这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;另外如果某个子项目需要另外的一个版本,只需要声明version即可。

      需要注意:dependencyManagement里只是声明依赖,并不实现引入,因此在父项目或者子项目中都需要需要显式的声明需要用的依赖。例如在一个父项目中引入Junit依赖,需要这样配置:

  


	4.0.0
	com.gyb
	project-parent
	0.0.1-SNAPSHOT
	pom
	project-parent
	http://maven.apache.org
	
		UTF-8
	
	
		
			
				junit
				junit
				4.12
			
		
	
	
		
			junit
			junit
			test
		
	
	......

dependencies

      相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

你可能感兴趣的:(Maven)