Maven的继承和聚合

Maven继承

指的是,子项目继承父级Maven项目的配置信息(pom.xml)

  1. 在父级pom.xml中,使用<dependencies>标签包裹的依赖,将会无条件传递给子级,与依赖范围无关

    xml 复制代码
    <!-- 父级pom.xml,三种依赖都将会传递给子级 -->
    <dependencies>
    	<dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>druid</artifactId>
    		<version>1.2.8</version>
    	</dependency>
    	<dependency>
        	<groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.10.2</version>
            <scope>test</scope> <!-- 与依赖范围无关 -->
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope> <!-- 与依赖范围无关 -->
        </dependency>
    </dependencies>
  2. 在父级pom.xml中,使用<dependencyManagement>标签包裹的依赖,默认不会传递给子级,需要子级手动引入相关依赖,父级只做依赖的版本管理

    xml 复制代码
    <!-- 父级pom.xml,将所有依赖放入dependencyManagement中,只是用于版本管理,默认不会将这些依赖传递给子级 -->
    <dependencyManagement>
    	<dependencies>
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.2.8</version>
    		</dependency>
    		<dependency>
            	<groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>5.10.2</version>
                <scope>test</scope> <!-- 与依赖范围无关 -->
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope> <!-- 与依赖范围无关 -->
            </dependency>
    	</dependencies>
    </depedencyManagement>
    xml 复制代码
    <!-- 在子级pom.xml中,需手动引入想要的依赖,此时无需指明version,会读取父级对应依赖的version -->
    <dependencies>
    	<dependency>
        	<groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
    </dependencies>

Maven聚合

指的是,当对父项目进行构建等操作时,自动会构建其内的所有子项目

xml 复制代码
<!-- 在父级pom.xml中声明modules标签即可,module存放的是子工程的路径 -->
<modules>
	<module>maven_child1</module>
	<module>../maven_child2</module>
</modules>
相关推荐
程序猿chen10 分钟前
JVM考古现场(十九):量子封神·用鸿蒙编译器重铸天道法则
java·jvm·git·后端·程序人生·java-ee·restful
&白帝&29 分钟前
java HttpServletRequest 和 HttpServletResponse
java·开发语言
阿杆1 小时前
🤯我写了一套无敌的参数校验组件④ | 现已支持 i18n
java·spring
小样vvv1 小时前
【微服务管理】注册中心:分布式系统的基石
java·数据库·微服务
amagi6001 小时前
Java中的正则表达式(Regular Expression)
java
喵手1 小时前
如何快速掌握 Java 反射之获取类的字段?
java·后端·java ee
AronTing1 小时前
06- 服务网格实战:从 Istio 核心原理到微服务治理升级
java·后端·架构
奋进的小暄1 小时前
贪心算法(18)(java)距离相等的条形码
java·开发语言·贪心算法
雷渊1 小时前
Elasticsearch查询为什么这么快
java
雷渊1 小时前
RocketMQ和kafka一样有重平衡的问题吗?
java·后端·面试