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>
相关推荐
为美好的生活献上中指4 小时前
Spring AI Advisor 深度实战:构建严谨的 AI Agent 拦截链
java·人工智能·spring·advisor·aiagent
ruofu334 小时前
如何让docker使用提前下载好的镜像,而不是在线拉取
java·spring cloud·docker
爱敲键盘的猴子4 小时前
深入理解 Spring IoC -- 基于 XML 的 Bean 配置详解
xml·java·spring
艾莉丝努力练剑4 小时前
【Qt:问题解决】Qt程序入口点错误修复:MinGW ABI兼容问题
java·服务器·开发语言·qt·文件系统·动静态库
程序员黑豆11 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
hey_sml12 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo12 小时前
数据结构-环形链表
java·数据结构·链表
萧瑟余晖14 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
是未才14 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
ttod_qzstudio15 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python