Maven依赖的查询、传递和继承

1、依赖包查询web

1.因此依赖经过GAV坐标来搜索(GAV:groupid,artifactId,version)
2.有一些网上的仓库提供了坐标的查询
MVNRepository: http://mvnrepository.com/
The Central Repository: http://search.maven.org/
3.经过<dependencies><dependency/></dependencies>来设置依赖
4.maven搜索依赖的方式,首先会在本地仓库查询,若是本地仓库没有该包,就会去中央仓库查询
2、依赖的范围
依赖的范围使用scope标签
1.compile,缺省值,指编译和打包的时候都会把这个依赖包含进去
2.test,指测试范围时有效,打包的时候不会把这个依赖包含进去
3.provided,指编译和测试时有效,打包的时候不会把这个依赖包含进去,如servlet-api,由于在servlet-api在tomcat等web服务器中已经存在,若是打包会冲突。
4.runtime,指运行的时候有效,打包的时候不会把这个依赖包含进去
5.system,指编译和测试时有效,打包的时候不会把这个依赖包含进去,须要显式提供包含依赖的jar,Maven不会在Repository中查找它
3、依赖的传递
1.依赖会被传递
A依赖C,B依赖A ==> B依赖C(这种依赖是基于compile这个范围进行传递)
2.依赖冲突的解决
1)如何B依赖A1.0,C依赖A1.2 ==> D依赖B和C,对于传递的A依赖,在pom文件中,先写B和C中的哪一个,D就对应依赖对应的A
2)若是B依赖A1.0,C依赖A1.2,D依赖C ==> F依赖B和D,对于传递的A依赖,若是路径长度不一致,怎依赖于路径短的,则F依赖于B的A1.0
3.若是但愿精确的控制依赖包,可使用依赖的排除功能进行控制
4、聚合和继承
1.如何咱们的项目包含多个模块咱们一个一个编译,会太麻烦,咱们能够建一个聚合项目,经过modules来统一操做
2.继承能够复用父类的pom,能够为咱们提升pom复用
子模块能够经过parent标签来导入要继承的pom
依赖继承采用dependencyManagement用来统一管理,在子模块中须要那个依赖,只须要写groupId和artifactId就能够,采用依赖管理既能够有效的控制依赖,有能在必定程度上避免依赖冲突。
相关文章
相关标签/搜索