一篇文章带你了解Maven的继承和聚合

目录
  • 1、继承
  • 2、聚合
  • 总结

1、继承

需求场景:

有三个 Maven 工程,每个工程都依赖某个 jar 包,比如 Junit,由于 test 范围的依赖不能传递,它必然会分散在每个工程中,而且每个工程的jar 包版本可能不一致。那么如何管理各个工程中对于某个 jar 包的版本呢?

解决办法:

将那个 jar 包版本统一提取到 “父" 工程中,在子工程中声明依赖时不指定版本,以父工程中统一设定的为准,同时也便于修改。

操作步骤:

①、创建父工程

②、在子工程中声明对父工程的引用  

<!--子工程中声明对父工程的引用  -->
  <parent>
      <groupId>com.ys.maven</groupId>
      <artifactId>Parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <!-- 以当前工程文件为基准的父工程 pom.xml文件的相对路径(可以不配置) -->
      <relativePath>../Parent/pom.xml</relativePath>
  </parent>

③、将子工程的坐标中与父工程坐标重复的内容删除(不删除也可以,为了简洁)

④、在父工程中统一那个 jar 的版本依赖

<dependencyManagement>
      <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8</version>
            <scope>test</scope>
        </dependency>
      </dependencies>

  </dependencyManagement>

dependencyManagement标签管理的依赖,其实没有真正依赖,它只是管理依赖的版本。  

⑤、在子工程中删除 Junit 的版本号

以后要更改版本号,我们只需要更改父工程中的版本号即可!!!  

⑥、父工程通过 properties 统一管理版本号

我们可以通过<properties></properties>自定义标签,然后在标签里面填写常量,这种方法不仅可以用来管理版本号,还可以用来管理比如设置某种编码等等。

2、聚合

需求场景:

在真实项目中,一个项目有表现层、业务层、持久层等。我们在用Maven 管理项目的时候,通常为创建多个 Maven 工程,也就是一个项目的多个模块。但是这样分成多个模块了,当我们进行项目打包发布的时候,那么要每一个模块都执行打包操作吗?这种重复的操作我们怎么才能避免呢?

解决办法

创建一个聚合工程,将其他的各个模块都由这个聚合工程来管理,那么我们在进行项目发布的时候,只需要打包这个聚合工程就可以了。

第一步:创建聚合工程(注意聚合工程的打包方式也必须为 pom,通常由 上面所讲的父工程来充当聚合工程)

第二步:创建子工程:业务层

①、选择 Maven Module

②、填写子工程模块名,打包方式选择 jar(子工程除了 web 层我们打包方式选择 war ,其余的都选择 jar)

第三步:创建子工程:表现层和持久层

创建步骤和前面一样,注意表现层打包方式我们要选择 war,因为要发布到 tomcat 容器运行。

第四步:在聚合工程中添加子工程的引用

注意:

1、这里虽然各个模块有依赖关系,但是 <module></modelu>可以不让依赖顺序添加,maven会自动识别依赖关系进行编译打包。

2、这里总的聚合工程随便哪个工程都可以,但是通常用 Parent 工程来完成。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Maven的聚合(多模块)和Parent继承

    即使是长期从事 Maven 工作的开发人员也不能完全掌握聚合(多模块)和 Parent 继承的关系,在使用多模块时,子模块总要指定聚合的 pom 为 <parent>.由于在大多数示例中都是这么写的,所以很难让人搞懂这两者的具体作用和关系. 实际上在 Maven 中聚合(多模块)和继承是两回事,两者不存在直接联系. pom文档地址:https://maven.apache.org/pom.html Maven 完全参考:http://books.sonatype.com/mvnref-book

  • Maven多个项目实现聚合过程解析

    项目有多个模块,每个都是一个maven项目,当操作这些模块,不是到每个模块中执行指令,而是会把这些模块汇总到一个单独的模块中,对汇总模块做的操作会同步到每个模块. 是为了多个maven项目批量的进行管理. 我们新建一个项目作为父项目,然后建两个module作为子项目. 打包方式需要为pom汇聚其他项目,这个总的模块其实可以是空的,只要一个pom文件就好: 测试执行: 1.mvn compile 可以看到都编译了 2.mvn clean 可以看到包含的module里面编译的结果全部被清空了. 其他

  • maven多模块项目依赖管理与依赖继承详解

    目录 maven多模块项目依赖管理与依赖继承 1.指定父模块与默认继承 2.依赖管理 关于maven项目依赖继承问题 只需要在父项目中加入 并且把父项目已POM的形式 然后在子项目中以<parent>标签 maven多模块项目依赖管理与依赖继承 1.指定父模块与默认继承 dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承) 父模块的pom <?xml version="1.0" encoding="UTF-8

  • Idea创建多模块maven聚合项目的实现

    1.怎么理解maven的继承和聚合 maven多模块项目通常由一个父模块和若干个子模块构成,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块)相互关联.多模块适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理. 继承:和java中的继承有点类似,就是父pom.xml声明的版本和引用的jar,子模块可以不用再引用直接调用. 聚合:父模块包含多个子模块就是聚合,多个子模块之间可以调用,但是要注意关系,不要两个互相依赖,这样做的好处就是可以通过一条命令进

  • Maven项目继承实现过程图解

    多个maven项目之间难免有重复的pom配置,重复的配置没必要重复写,maven提供了父子继承的关系,重复的依赖直接放在父项目的pom中. 所以不希望每个开发者随意定义maven版本依赖,可以在父项目中进行说明,然后子项目沿用即可. idea创建父项目(这是一个父项目,也是一个空项目,只需要pom.xml,编写相关的依赖, 父项目必须用pom打包的方式): 编辑父项目pom.xml <?xml version="1.0" encoding="UTF-8"?&g

  • 一篇文章带你了解Maven的继承和聚合

    目录 1.继承 2.聚合 总结 1.继承 需求场景: 有三个 Maven 工程,每个工程都依赖某个 jar 包,比如 Junit,由于 test 范围的依赖不能传递,它必然会分散在每个工程中,而且每个工程的jar 包版本可能不一致.那么如何管理各个工程中对于某个 jar 包的版本呢? 解决办法: 将那个 jar 包版本统一提取到 “父" 工程中,在子工程中声明依赖时不指定版本,以父工程中统一设定的为准,同时也便于修改. 操作步骤: ①.创建父工程 ②.在子工程中声明对父工程的引用 <!--

  • 一篇文章带你了解Maven的坐标概念以及依赖管理

    目录 1.什么是坐标? ①.数学中的坐标 ②.Maven 中的坐标 ③.Maven 坐标和仓库,jar 包的关系 2.什么是依赖? 3.依赖的详细配置 4.依赖的范围 scope 1.compile 范围依赖 2.test 范围依赖 3.provided 范围依赖 4.runtime 范围依赖: 5.依赖的传递 我们这里举个例子来看: ①.第二依赖范围是 test ②.第二依赖范围是 compile 6.依赖的排除 7.依赖的冲突 8.可选依赖 总结 1.什么是坐标? ①.数学中的坐标 在平面上

  • 一篇文章带你了解Maven的生命周期

    目录 1.什么是 生命周期? 2.Clean Lifecycle:在进行真正的构建之前进行一些清理工作 3.Default Lifecycle:构建的核心部分,编译.测试.打包.安装.部署等等 4.Site Lifecycle:生成项目报告,站点,发布站点. 总结 1.什么是 生命周期? Maven 强大的原因是有一个十分完善的生命周期,生命周期可以理解为项目构建步骤的集合,它定义了各个构建环节的执行顺序,有了这个顺序,Maven 就可以自动化的执行构建命令. Maven的核心程序中定义了抽象的

  • 一篇文章带你解决 IDEA 每次新建项目 maven home directory 总是改变的问题

    Maven是基bai于项目对象模型,可以通du过一小段描述信息来管理zhi项目的构建,报告和文档的软件项dao目管理工具. 重装个系统,各种问题,idea 也出现各种问题 装了个新版的 idea 2020 2.x 版本的,不知道咋回事,其他都好使,就是创建 SpringBoot 项目时: 加载 pom.xml 总是出错,原因就是,新建立的项目 maven home directory 总是乱,没有安装 设置的默认方式 我试了,改当前项目的,不好使 该默认设置,不好使,网上的其他方法也试了,很奇怪

  • 一篇文章带你搞懂Python类的相关知识

    一.什么是类 类(class),作为代码的父亲,可以说它包裹了很多有趣的函数和方法以及变量,下面我们试着简单创建一个吧. 这样就算创建了我们的第一个类了.大家可以看到这里面有一个self,其实它指的就是类aa的实例.每个类中的函数只要你不是类函数或者静态函数你都得加上这个self,当然你也可以用其他的代替这个self,只不过这是python中的写法,就好比Java 中的this. 二.类的方法 1.静态方法,类方法,普通方法 类一般常用有三种方法,即为static method(静态方法),cl

  • 一篇文章带你了解Java Spring基础与IOC

    目录 About Spring About IOC Hello Spring Hello.java Beans.xml Test.java IOC创建对象的几种方式 Spring import settings Dependency Injection 1.构造器注入 2.set注入 3.拓展注入 P-namespcae&C-namespace Bean scopes singleton prototype Bean的自动装配 byName autowire byType autowire 小结

  • 一篇文章带你搞定Python多进程

    目录 1.Python多进程模块 2.Python多进程实现方法一 3.Python多进程实现方法二 4.Python多线程的通信 5.进程池 1.Python多进程模块 Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Process对象来创建一个进程对象.这个进程对象的方法和线程对象的方法差不多也有start(), run(), join()等方法,其中有一个方法不同Thread线

  • 一篇文章带你使用Typescript封装一个Vue组件(简单易懂)

    一.搭建项目以及初始化配置 vue create ts_vue_btn 这里使用了vue CLI3自定义选择的服务,我选择了ts.stylus等工具.然后创建完项目之后,进入项目.使用快捷命令code .进入Vs code编辑器(如果没有code .,需要将编辑器的bin文件目录地址放到环境变量的path中).然后,我进入编辑器之后,进入设置工作区,随便设置一个参数,这里比如推荐设置字号,点下.这里是为了生成.vscode文件夹,里面有个json文件. 我们在开发项目的时候,项目文件夹内的文件很

  • 一篇文章带你搞定SpringBoot中的热部署devtools方法

    一.前期配置 创建项目时,需要加入 DevTools 依赖 二.测试使用 (1)建立 HelloController @RestController public class HelloController { @GetMapping("/hello") public String hello(){ return "hello devtools"; } } 对其进行修改:然后不用重新运行,重新构建即可:只加载变化的类 三.热部署的原理 Spring Boot 中热部

  • 一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.restart.exclude=classpath:/static/** 或者使用: #表示将static目录加入到修改资源会重启的目录中来 spring.devtools.restart.additional-paths=src/main/resource/static 此时对static 目录下的静态

随机推荐