博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven依赖(一)
阅读量:4303 次
发布时间:2019-05-27

本文共 2209 字,大约阅读时间需要 7 分钟。

POM.xml

4.0.0
com.yuxl.test
user
0.0.1-SNAPSHOT
jar
user
http://maven.apache.org
UTF-8
....

坐标:

groupId,artifactId,version,packaing,classifier

groupId:当前Maven项目隶属的项目,必须的;
artifactId:项目中的模块,必须的;
version:版本,必须的;
packaging:maven项目的打包方式,默认为jar;
classifier:不能直接定义,由插件帮助生成的(不是太理解)。

依赖配置

......
???
???
???
???
???
...
......
  1. groupId,artifactId,version:依赖性的坐标
  2. type:依赖类型,默认为jar
  3. scope:依赖范围
  4. optional:依赖是否可选
  5. exclusions:排除传递依赖

    依赖范围(scope)

    (三种classpath:编译classpath、测试classpath、运行classpath)

    • compile:编译依赖范围,默认。对编译、测试、运行都有效
    • test:测试依赖范围,只对测试classpath有效,只有在编译test代码和运行test代码才有效(如:junit)
    • provided:提供依赖范围,编译和测试classpath有效,运行时无效(如:servlet-api,因为有容器提供,不需要重复引入了)
    • runtime:运行时依赖范围,对于测试和运行classpath有效,在编译主代码时无效(如:jdbc驱动)
    • system:系统依赖范围,与三种classpath有关。(不是太理解,好像跟本机系统绑定,本地的,maven仓库以外的类库)
    • import:导入依赖范围(dependencyManagement)

      scope 编译classpath 测试classpath 运行classpath
      compile y y y
      test n y n
      provided y y n
      runtime n y y
      system y y n

    依赖传递性

    如果:A ⇒B,B⇒C(A依赖于B,B依赖于C)

    那么:A⇒C(A依赖于C)

    依赖原则

    1. 路径最近者优先
    2. 第一声明者优先
    3. 和版本的大小无关

      如:

      依赖关系 结果 备注
      A ⇒D⇒C1,B⇒C2 C2 B的路径比A短
      A ⇒C1,B⇒C2 C1 A声明在B前面

    可选择性

    (一般不用optional,因为一般对象设计中,有单一责任的原则,即一个类只做一项事,不要糅杂太多的功能)

    如果:A ⇒B,B⇒X或者Y(A依赖于B,B依赖于X或者Y(可选的))使用了

    ```    
    true
    ```

    而A依赖B,可是B中有可选的X,Y,所以需要在A中显示声明下,到底用X,还是Y(即把B中的X或者Y其中一个copy过来,将<optional<true</optional>删除)。

    排除依赖

    在<exclusions<true</exclusions>中加上要排除的依赖

    ......
    ???
    ???

    归类依赖

    说白了,就是定义了一些变量,方便重复使用。(以后修改一处即可)

    ...
    3.0
    ...
    org.springframework
    spring-core
    ${springframework.version}

    优化依赖

    查看当前项目中已经解析的依赖:

    mvn dependency:list
    mvn dependency:tree

推荐一本书籍:《maven实战》作者:许晓斌 《maven 3 in action》 作为入门和基础学习很不错的。

转载地址:http://okhws.baihongyu.com/

你可能感兴趣的文章
游记集合
查看>>
【spark】Spark环境配置
查看>>
windows phone (13) 样式继承
查看>>
擦亮眼睛,别做梦了:关于创业公司股份的真相
查看>>
.net core webApi 上传附件
查看>>
Hadoop 配置
查看>>
解决overflow: auto在Ios中滑动不流畅
查看>>
Linux内核分析 期中总结
查看>>
RHEL8.0-beta-1.ISO
查看>>
Sublime Text 2以及Zen Coding
查看>>
scrapy相关
查看>>
[Android] 状态栏的一些认识
查看>>
[iOS]圆形进度条及计时功能
查看>>
【教程】模拟登陆百度之Java代码版
查看>>
最短路问题
查看>>
杭电ACM 2052 Picture
查看>>
LeetCode 350. Intersection of Two Arrays II
查看>>
DB2时间操作
查看>>
滚动相册
查看>>
《剑指offer》连续子数组的最大和
查看>>