`

06 聚合和继承

阅读更多

一、Maven多模块
      当我们一个项目有多个模块时,我们想使用一个命令即可对多个模块进行构建。Maven聚合就是为了满足该需求的。
      假设我们有两个模块A和B。想使用一个命令就构建A和B两个模块,我们需要创建一个额外的名为C的模块,然后通过该模块构建整个项目的所有模块。作为一个模块,它必须有自己的POM文件,但作为一个聚合项目,它的POM又有其特殊地方。如:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>C</artifactId>
  <packaging>pom</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <modules>
  	<module>A</module>
  	<module>B</module>
  </modules>
</project>

      上述POM文件有两个特殊的地方:一是打包类型必须为pom,二是有modules元素。
      通常为了方便用户构建项目,通常将聚合模块放在项目目录的最顶层,其他模块则作为聚合模块的子目录。如果使用平行目录,则聚合模块的POM要作出相应修改:

<modules>
	<module>../A</module>
	<module>../B</module>
</modules>

      以此可看出,module中的内容是其他模块所在目录,而不是模块名称。

 

 

二、继承
1.父模块和子模块
      一个项目的多个模块往往会有大量重复的配置。在面向对象编程中,程序员可通过继承一定程度上减少代码重复。Maven中也有类似的继承机制。
父模块的POM只有一个特殊的地方就是打包类型必须为pom。将各种子模块中共同配置放到该父模块中。然后由其他模块来继承:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>A</artifactId>
    <groupId>com.test</groupId>
    <version>0.0.1-SNAPSHOT</version>
	<relativePath>./pom.xml</relativePath>
  </parent>
  <artifactId>A</artifactId>
</project>

     上述POM文件中parent指明了父模块。relativePath元素指明了父模块pom.xml文件位置。默认值是目前模块的上层目录。子模块可以不指定groupId和artifactId。

 

2.可继承的POM元素
     大多数元素都可被继承(是否意味着有些元素不能被继承??)

 

3.依赖管理
      子模块会继承父模块的依赖,但是并不是所有子模块都需要父模块中的所有依赖,此时可使用 dependencyManagement 元素,在dependencyManagement中声明的依赖不会引入实际的依赖,不过它能够约束dependencies下的依赖使用。子模块只要指定依赖的groupId和artifactId即使显示指定该依赖。

 

4.插件管理
      pluginManagement和dependencyManagement类似,用来管理插件。

 

三、聚合和继承的关系
      两者的目的不同,聚合是为了方便构建,继承是为了消除重复配置。
对于聚合模块来说,它需要知道哪些被模块被聚合,但那些被聚合的模块不知道这个聚合模块的存在。
      对于继承关系的父模块来说,它不知道有哪些子模块继承于它,但那些子模块才都必须知道自己的父模块。
      现实中,通常将一个打包类型为pom的模块即作聚合模块,又作父模块。

四、反应堆


1.概述
      所有反应堆是一个多模块项目中,所有模块组成的一个构建结构。根据各个模块之间的依赖关系,Maven会自动生成反应堆,要注意不能让两个模块互相依赖。


2.裁剪反应堆
      一般来说,用户会选择构建整个项目或者模块某个模块,但有些时间,用户会想仅仅构建某些模块,而不所有模块。
-am   --also-make 同时构建所列模块的依赖模块
-amd --also-make-dependents 同时构建依于所列模块的模块
-pl    --projeccts <arg> 构建指定的模块,模块间用逗号分隔
-rf    --resume-fron <arg> 从指定的模块开始构建,反应堆之前的模块不被构建。

 

分享到:
评论

相关推荐

    maven聚合与继承配置

    在Java开发中,Maven是一个强大...总结,Maven的聚合和继承是两种重要的项目组织方式,它们使得大型项目管理变得简单而高效。在实际开发中,合理利用这两个特性,可以有效地提高团队协作的效率,降低项目维护的复杂度。

    通过Maven的聚合和继承特性创建多模块项目示例

    Maven,作为Java开发中的构建工具,提供了强大的聚合(Aggregation)和继承(Inheritance)特性,使得多模块项目的管理变得高效且有序。本文将深入探讨如何利用这两个特性来创建一个复杂的多模块项目,并通过提供的...

    maven聚合和继承

    在Maven中,"聚合"和"继承"是两个重要的特性,它们有助于管理和组织大型的多模块项目。 **一、Maven聚合** Maven聚合(Aggregation)是用来管理多个相关项目的方式,这些项目可能共享一部分代码或者有共同的构建...

    maven依赖+继承+聚合

    本示例将深入探讨Maven中的“依赖”、“继承”和“聚合”这三个核心概念,帮助开发者更好地理解和应用Maven。 首先,我们来讨论"Maven依赖"。在Java开发中,一个项目往往需要引用其他库或者框架来完成特定功能。...

    maven继承与聚合代码

    本篇文章将深入探讨Maven的两个重要特性:继承(Inheritance)和聚合(Aggregation),并结合提供的资源《一头扎进Maven3》第五讲源码及文档进行详细解释。 **一、Maven继承** Maven的继承机制允许我们在多个项目...

    maven 依赖,聚合,继承,插件运行应用

    总结起来,Maven的依赖管理、聚合、继承和插件运行机制是构建和管理Java项目的重要工具。它们简化了项目的构建流程,提高了代码复用和项目协作的效率。理解并熟练掌握这些概念,对于Java开发者来说至关重要。

    Maven聚合与继承实例详解.docx

    本文将深入探讨Maven的聚合与继承特性,并通过实例进行详细解释。 首先,Maven的依赖管理系统允许开发者声明项目所需的库和它们的版本,从而避免了版本冲突和手动管理jar包的问题。在Maven的POM(Project Object ...

    组合和继承的联合

    在编程世界中,组合和继承是面向对象编程的两种核心机制,它们允许我们构建复用性和可扩展性极强的代码。本章我们将深入探讨这两种概念的联合使用,以及它们在C++中的实现。 组合(Composition)是创建复杂对象的一...

    Maven的聚合与继承DEMO(以及前后端分离)

    Maven 的聚合和继承特性可以很好地支持这种架构,通过不同的模块分别处理前端和后端的构建,保持项目结构清晰,便于团队协作。 在实践中,我们可能需要创建以下类型的 Maven 子项目: 1. 前端项目:通常使用 ...

    UML学习之依赖_关联_聚合_组合_继承

    ### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...

    面向对象程序设计—重载、继承、多态和聚合

    ### 面向对象程序设计的关键概念:重载、继承、多态和聚合 #### 方法重载(Overloading) 在面向对象程序设计中,方法重载是一种非常实用的功能,它允许程序员定义多个具有相同名称但参数列表不同的方法。这种方法...

    maven总结笔记-继承和聚合

    maven总结笔记-继承和聚合

    UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

    在UML中,有六种主要的类间关系:继承、实现、依赖、关联、聚合和组合。理解这些关系对于设计高质量的软件架构至关重要。 1. **继承**: 继承是类与类之间的一种层次结构关系,表示一个类(子类)可以从另一个类...

    maven聚合项目

    总结来说,这个"Maven聚合项目"是一个集成了聚合、继承、插件管理和私服使用的实例,展示了如何高效地管理和构建多模块的Java项目。通过这种方式,开发团队可以更有效地协同工作,保证项目的稳定性和一致性。

    UML中继承实现依赖关联聚合组合的联系与区别_线条箭头.doc

    UML 中继承、实现、依赖、关联、聚合、组合的联系与区别 UML 中的继承关系是指一个类继承另外一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。在 Java 中此类关系通过...

    几种类间关系:继承、实现、依赖、关联、聚合、组合

    几种类间关系:继承、实现、依赖、关联、聚合、组合。可做为开发设计时速查手册。

    百度地图点聚合自定义样式

    在IT行业中,地图应用是不可或缺的一部分,特别是在大数据和地理信息系统(GIS)的背景下,点聚合技术显得尤为重要。本文将深入探讨“百度地图点聚合自定义样式”这一主题,旨在帮助开发者更好地理解和实现在百度...

    UML 继承,实现,依赖,关联,聚合

    本文将深入探讨UML中的五个关键关系:继承、实现、依赖、关联和聚合,以及它们在软件设计中的作用。 1. **继承(Inheritance)**: 继承是面向对象编程的核心概念之一,它允许一个类(子类或派生类)从另一个类...

Global site tag (gtag.js) - Google Analytics