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就可以,采用依赖管理既可以有效的控制依赖,有能在一定程度上避免依赖冲突。
  • 相关阅读:
    [Tutorial] How to check and kill running processes in Ubuntu
    [Tutorial] Getting started with Gazebo in ROS
    Linux基础命令
    Linux安装系统
    vue 前后端数据交互问题解决
    如何在cmd中启动MongoDB服务器和客户端
    selenuim模块的使用 解析库
    beautifhulsoup4的使用
    浅谈scrapy框架安装使用
    自动登录 点赞 评论 抽屉网
  • 原文地址:https://www.cnblogs.com/bffc/p/3690993.html
Copyright © 2011-2022 走看看