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>
相关推荐
双力臂40410 分钟前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
Edingbrugh.南空29 分钟前
Aerospike与Redis深度对比:从架构到性能的全方位解析
java·开发语言·spring
QQ_4376643141 小时前
C++11 右值引用 Lambda 表达式
java·开发语言·c++
永卿0011 小时前
设计模式-迭代器模式
java·设计模式·迭代器模式
誰能久伴不乏1 小时前
Linux如何执行系统调用及高效执行系统调用:深入浅出的解析
java·服务器·前端
慕y2742 小时前
Java学习第七十二部分——Zookeeper
java·学习·java-zookeeper
midsummer_woo2 小时前
基于spring boot的医院挂号就诊系统(源码+论文)
java·spring boot·后端
_Aaron___2 小时前
面向对象的三大特性---多态
java
Kiri霧2 小时前
IntelliJ IDEA
java·ide·kotlin·intellij-idea
daixin88483 小时前
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
java·开发语言·redis·缓存