maven依赖的冲突,聚合,继承。

maven的依赖情况可以在eclipse的“”maven dependencies“”看见


依赖冲突

情况1:谁写在前面,就依赖谁
项目“大老板"依赖io2.5
<groupId>com.boss</groupId>
    <artifactId>boss</artifactId>
    <version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
    <dependencies>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>
    
</dependencies>
项目“二老板”依赖io2.0

<groupId>com.secondboss</groupId>
<artifactId>secondboss</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0</version>
</dependency>
</dependencies>


项目“我”依赖大老板和二老板

<groupId>com.wo</groupId>
<artifactId>wo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
    <dependency>
<groupId>com.boss</groupId>
<artifactId>boss</artifactId>
<version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
<groupId>com.secondboss</groupId>
<artifactId>secondboss</artifactId>
<version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>
如上面这种情况是大老板写在二老板前面,“我”依赖的就是io2.5
反之,二老板写在前面,“我”依赖的就是io2.0
情况二:短路优先
“大老板”写法不变。
“二老板”增加依赖,依赖“大老板”。

<groupId>com.secondboss</groupId>
<artifactId>secondboss</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.boss</groupId>
<artifactId>boss</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>    
</dependencies>
“我”依赖“二老板”,如下所示,我的io版本号是2.0。和“二老板”一样。

<groupId>com.wo</groupId>
<artifactId>wo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
    <dependency>    
<groupId>com.secondboss</groupId>
<artifactId>secondboss</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions><!--这里有没有排除都行,最后版本号是2.0-->
  <exclusion>
<groupId>com.boss</groupId>
<artifactId>boss</artifactId>
  </exclusion>
</exclusions>
    </dependency>
</dependencies>
注意:一个项目必须"install"后才能被另一个项目依赖。


聚合

把几个项目一起"install"
比如创建一个项目“公司”,聚合“大老板”,“二老板”和“我”。那么安装“公司”的时候,就依次安装了:"大老板”,“二老板”和“我”,
“公司"的"pom.xml"配置如下
<groupId>com.company</groupId>
<artifactId>company</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging><!--注意这里打包是pom-->
<modules>
  <module>../boss</module>
  <module>../secondboss</module>
  <module>../wo</module>
   </modules>
 继承
   如果测试包“junit”的版本号需要统一,可以做一个父类,其他类继承此类。
<groupId>com.parent</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging><!--注意是pom-->


<name>parent</name>
<url>http://maven.apache.org</url>
<properties>
  <junit.version>3.8.1</junit.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>


让“大老板”依赖此父类,“大老板”的junit 的版本号就和"parent"一样了,是"3.8.1"
<parent>
<groupId>com.parent</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>    
  </dependencies>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值