maven学习

maven学习

22年8月12日

pom.xml文件结构说明

该文件下的

  1. Project是所有pom.xml的根元素,并且在里面定义了命名空间和xsd元素
  2. ModelVersion 当前pom模型的版本
  3. GroupId 定义当前所处的版本号
  4. Packaging 定义maven项目的打包方式
  5. Dependencise 元素地下就是加入依赖包的地方,可以从:http://mvnrepository.com 处下载。
  6. 每个dependency 都是一个依赖包,依赖包也就是在dependency 里面定义各个依赖包的坐标,这样maven就会从网上下载依赖包到本地仓库(我的放在maven所在的res目录下),有所不同的是dependency元素包含了一个子元素,这个就是对maven生命周期的一个说明,还包含几个其他的元素:
    1. type 说明依赖的类型
    2. optional 标记依赖是否可选
    3. exclusions 用来排斥传递依赖

依赖

传递依赖有以下几个原则:

  1. 最短路径原则 如果A对于依赖路径中有两个相同的jar包,那么选择路径短的那个包。
  2. 第一声明优先原则 如果A对于依赖路径中有两个相同的jar包,路径也相同,那么依赖写在前面的优先。
  3. 可选依赖不会传递 如果A->B,B->C,B->D,A对B直接依赖,B对C和D是可选依赖,那么在A中不会引入C和D。

依赖范围

  1. test 范围指的是测试范围有效,在编译和打包时都不会使用这个依赖
  2. compile 范围指的是编译范围有效,在编译和打包时都会将依赖存储进去
  3. provided 依赖:在编译和测试的过程有效,最后生成var包时不会加入
  4. runtime 在运行的时候依赖,在编译的时候不依赖

聚合和继承

聚合

若项目中有core、dao、service、web模块,如何各个模块一次编译、打包、发布?可以构建另一个模块user_parent,pom.xml设置如下:

<modelVersion>4.0.0</modelVersion>
     <groupId>org.pango.user</groupId>
     <artifactId>user-parent</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <packaging>pom</packaging>

     <modules>
          <module>
               ../user-core
          </module>
          <module>
               ../user-dao 
          </module>
          <module>
               ../user-service
          </module>
          <module>
               ../user-web
          </module>
     </modules>

注意:packaging的类型为pom,module的值是一个以当前POM为主目录的相对路径。

继承

在一个父级别的Maven的pom文件中定义了相关的常量、依赖、插件等配置后,实际项目模块可以继承此父项目的pom文件

将需要继承的包直接卸载dependencies中;

通过parent这个元素来继承父项目中的包,在这个元素中定义parent项目的坐标已经父项目中pom的相对位置

对于需要选择的继承可以将依赖放入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7yoOqp1X-1660611356729)(study-images/maven-01.jpg)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值