其他分享
首页 > 其他分享> > Maven中的关系

Maven中的关系

作者:互联网

Maven中的关系

继承

一个Maven项目可以继承另一个Maven项目,分别称为子项目、父项目

场景:多个子项目中使用的是相同的依赖或插件,此时可以把相同的配置抽取到一个父项目中,进行统一的管理,保持一致性

步骤:

  1. 将父项目的打包方式设置为pom

    <!--
        打包方式:
        jar:Java项目的打包方式:默认值
        war:Web项目的打包方式
        pom:父项目的打包方式-->
        <packaging>jar</packaging>
    
  2. 在子项目中引用父项目,指定父项目的坐标

    <!--  引用父项目,指定父项目的坐标-->
        <parent>
            <groupId>org.example</groupId>
            <artifactId>parent</artifactId>
            <version>1.0-SNAPSHOT</version>
              <!--  指定父项目的pom.xml文件的相对物理路径-->
            <relativePath>xx/xx/</relativePath>
        </parent>
    
    

问题:有时并不是父项目的所有依赖都需要被项目继承,但是又希望能够通过父项目对依赖进行统一管理,如版本的控制

解决:使用dependencyManagement标签

步骤:

  1. 在父项目中配置dependencyManagement

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.ljy</groupId>
                <artifactId>mysql..</artifactId>
                <version>12.52.</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  2. 在子项目中引用父项目中的依赖、

<dependencies>
    <dependency>
        <groupId>com.ljy</groupId>
        <artifactId>mysql..</artifactId>
    </dependency>
</dependencies>

聚合

将多个子项目添加到一个父项目中,然后通过对父项目进行操作,从而实现对所有聚合的子项目的操作

在父项目的pom中

<!--    聚合子项目,指定子项目的根目录-->
 <modules>
     <module>../...</module>
     <module>../...</module>
 </modules>

依赖(继承)

项目C-->项目B-->项目A

概念:如果项目C依赖于项目B,项目B依赖项目A,则项目C也依赖于项目A,这叫依赖的传递

配置依赖关系:

<!--  依赖于其他子项目child01-->
        <dependency>
            <groupId>com.ljy</groupId>
            <artifactId>child01</artifactId>
            <version>xx</version>
        </dependency>

控制依赖的传递

并不是所有的依赖都会被传递

<dependency>
    <groupId>com.ljy</groupId>
    <artifactId>lof3</artifactId>
    <optional>true</optional>
</dependency>

不会出现jar包的冲突

使用Maven不会出现jar包冲突,通过两个原则来保证:

       <dependency>
            <groupId>com.ljy</groupId>
            <artifactId>child01</artifactId>
            <version>xx</version>
        </dependency>
       <dependency>
            <groupId>com.ljy</groupId>
            <artifactId>child02</artifactId>
            <version>xx</version>
        </dependency>

不要传递的依赖

方式1:在依赖的配置中配置不允许传递

<optional>true</optional>

方式2:在当前的项目中配置不接收传递的特定依赖

<dependency>
   <!-- 不接收特定的依赖 --> 
<exclusions>
 <exclusion>
    <groupId>xxx</groupId>
    <artifacdId>xxx</artifacdId>
 </exclusion>
</exclusions>
</dependency>

标签:关系,ljy,依赖,项目,Maven,传递,子项目,com
来源: https://www.cnblogs.com/lijinyu08/p/14047272.html