zoukankan      html  css  js  c++  java
  • maven聚合与继承笔记

    maven聚合

    聚合的目的是为了快速构建项目,当我们有几个maven模块,想要一次性构建,而不是到每个模块下面去执行maven命令,这时候就需要使用maven聚合(或者称为多模块)。

    使用聚合的时候,我们需要新建一个maven项目,由它来控制构建其他的项目,其pom.xml配置与其他普通maven项目的区别主要在以下两个地方:

    1. 打包类型(packaging)必须为pom

    2. 需要在其中添加modules标签,在其中使用module标签包括需要同时构建的maven模块的名称路径,路径为相对于此pom.xml文件的路径(如果与pom.xml文件同级则直接写项目名,如果在上一级则写../项目名)。

    这样当我们在此项目下执行构建的时候,就会同时构建其中配置的项目。

    下面举一个配置文件的例子:

    <project ......>
      <groupId>XXX.XXX</groupId>
      <artifactId>XXX</artifactId>
      <version>1.0</version>
      <packaging>pom</packaging>
      <modules>
        <module>XX1</module>
        <module>XX2</module>
      </modules>
    </project>

    maven继承

    继承的目的是为了消除重复配置,在项目中可以通过继承父模块的一些配置来简化配置文件,避免配置的重复。

    父模块

    1. 使用继承的时候,父模块的配置文件(pom.xml)中打包类型必须同聚合一样,为pom。

    2. 依赖管理:为了避免子模块继承没有不必要的依赖,所以在父模块中并不引入实际的依赖,而是使用dependencyManagement元素,在其中声明的的dependencies不会在其本身(父模块)中引入依赖,也不会给它的子模块引入依赖。如果在子模块需要使用其中配置的依赖,则可以在子模块中声明,但是不需要声明版本号和依赖范围(已在父模块中声明),这样可以统一不同模块中的依赖版本。

    3. 插件管理:同依赖管理,Maven提供了类似的pluginManagement元素来帮助管理插件,使用方式也基本相同。

    子模块

    子模块如果要继承父模块,则需在其pom.xml中需添加如下配置,同时其groupId和version会省略,直接继承父模块的配置。

    <parent>
        <groupId>XXX.XXX</groupId>
        <artifactId>XX</artifactId>
        <version>1.0</version>
        <relativePath>XX/XX/pom.xml</relativePath>
    </parent>

    其中relativePath为父项目的pom.xml路径(如果没有配置此项,则默认为../pom.xml,即上级目录下的pom.xml),构建时会先根据relativePath查找,如果找不到,则会再从本地仓库查找。

     

    注:maven聚合和继承可以同时使用。

  • 相关阅读:
    在 IdentityServer4 中创建客户端
    IdentityServer4 快速上手
    GraphQL Part IV: 浏览器内的 IDE
    GraphQL Part VII: 实现数据变更
    GraphQL Part VIII: 使用一对多查询
    GraphQL Part VI: 使用 Postgres 和 EF Core 持久化数据
    GraphQL Part V: 字段,参数和变量
    GraphQL Part III: 依赖注入
    GraphQL Part II: 中间件
    GraphQL Part I: hello, world.
  • 原文地址:https://www.cnblogs.com/zawier/p/6684647.html
Copyright © 2011-2022 走看看