zoukankan      html  css  js  c++  java
  • Maven依赖的查询、传递和继承

    一、依赖包查询

    1.所以依赖通过GAV坐标来搜索(GAV:groupid,artifactId,version)
    2.有一些网上的仓库提供了坐标的查询
    The Central Repository:http://search.maven.org/
    3.通过<dependencies><dependency/></dependencies>来设置依赖
    4.maven搜索依赖的方式,首先会在本地仓库查询,如果本地仓库没有该包,就会去中央仓库查询
    二、依赖的范围
    依赖的范围使用scope标签
    1.compile,缺省值,指编译和打包的时候都会把这个依赖包含进去
    2.test,指测试范围时有效,打包的时候不会把这个依赖包含进去
    3.provided,指编译和测试时有效,打包的时候不会把这个依赖包含进去,如servlet-api,因为在servlet-api在tomcat等web服务器中已经存在,如果打包会冲突。
    4.runtime,指运行的时候有效,打包的时候不会把这个依赖包含进去
    5.system,指编译和测试时有效,打包的时候不会把这个依赖包含进去,需要显式提供包含依赖的jar,Maven不会在Repository中查找它
    三、依赖的传递
    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.如果希望精确的控制依赖包,可以使用依赖的排除功能进行控制
    四、聚合和继承
    1.如何我们的项目包含多个模块我们一个一个编译,会太麻烦,我们可以建一个聚合项目,通过modules来统一操作
    2.继承可以复用父类的pom,可以为我们提高pom复用
    子模块可以通过parent标签来导入要继承的pom
    依赖继承采用dependencyManagement用来统一管理,在子模块中需要那个依赖,只需要写groupId和artifactId就可以,采用依赖管理既可以有效的控制依赖,有能在一定程度上避免依赖冲突。
  • 相关阅读:
    VirtualBox如何增加CentOS根目录容量
    关于yum的一些安装问题
    Linux分区方案
    排查java.lang.OutOfMemoryError: GC overhead limit exceeded
    Linux Shell 编程 教程 常用命令
    sqlalchemy(二)简单的连接示例
    sqlalchemy(一)常用连接参数及包
    Syncthing – 数据同步利器---自己的网盘,详细安装配置指南,内网使用,发现服务器配置,更新docker
    删除所有已经停止的容器 docker rm $(docker ps -a -q)
    离线安装docker镜像
  • 原文地址:https://www.cnblogs.com/bffc/p/3690993.html
Copyright © 2011-2022 走看看