maven进阶

一.maven的依赖配置

<project>
  ...
  <dependencies>
    <denpendcy>
      <groupId></groupId>
      <artifactId></artifactId>
      <version></version>
      <type></type>
      <scope></scope>
      <optional></optional>
      <exclusions>
        <exclusion>
          ...
        </exclusion>
      </exclusions>
    </denpendcy>
  </dependencies>
</project>

虽然上面的配置很多,但是平时常用的只用三个:groupId,artifactId,version
上面各个配置的含义如下:

  • groupId: 依赖组id,可以理解为java的包名,一般用域名倒写
  • artifactId: 可以理解为项目名或者依赖名
  • version:依赖的版本
  • type:依赖的类型,对应项目坐标定义的packaging,大部分情况下,该属性不必声明,其默认值为jar
  • scope:依赖的范围,这个对应的属性就比较多了,后续会做详细介绍
  • optional:标记依赖是否可选
  • exclusions:用来排除依赖的传递性,其中可以配置多个exclusion属性,每个标签对应着groupId、artifactId、version等三个基本属性

二.依赖范围-scope属性

属性值含义
compilescope的默认值,编译,运行测试这三种classpath都有效。
provided已提供依赖范围。servlet-api
runtime运行时依赖范围。jdbc的驱动
test测试依赖范围。Junit
system系统依赖范围。如果需要引入本地的依赖就使用这个

三.依赖传递

A依赖B,B依赖C
那么A就可以间接的依赖了C,就可以使用C的方法

四.依赖冲突

A依赖B,A也依赖C,B和C都依赖D,而且依赖的版本还不一样,那么就会造成依赖冲突,这是大型项目中常见的问题
在这里插入图片描述

在这里插入图片描述

冲突的解决:

在这里插入图片描述

只需要将其中的一个排除即可

五.继承与聚合

在maven的多模块项目中存在继承和聚合的概念.

1.聚合

一个父项目中可以包含多个子模块

<?xml version="1.0"
  encoding="UTF-8"?>
<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baidu</groupId>
<artifactId>company</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>company-agent</module>
<module>company-java-core</module>
<module>company-https</module>
<module>company-http</module>
<module>company-management</module>
<module>company-security</module>
<module>company-login</module>
<module>company-sns</module>
<module>company-mt</module>
<module>company-message-scribe2mysql-storm</module>
<module>company-activator</module>
<module>company-activator-api</module>
<module>company-recard</module>
<module>company-zk-replicator</module>
<module>company-app-auth</module>
<module>company-app-auth-https</module>
<module>company-app-auth-applier</module>
<module>company-user-rights</module>
<module>company-idc</module>
</modules>
</project>

2.继承

继承和聚合有相似的地方,继承的特性是指建立一个父模块,我们项目中的多个模块都做为该模块的子模块,将各个子模块相同的依赖和插件配置提取出来,从而简化配置文件,父模块的打包方式必须为pom,否则无法构建项目。父模块和聚合模块经常可以做到合二为一。
通过在各个子模块中配置来表明其继承与哪一个父模块:

<parent>
<groupId>com.baidu</groupId>
<artifactId>miliao-rootpom</artifactId> 
<version>2.0.3</version>
</parent>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值