011.maven 继承与聚合

聚合:对于聚合模块来说,它知道有哪些被聚合的模块,而对于被聚合的模块来说,它们不知道被谁聚合了,也不知道它的存在;

继承:对于继承关系的父POM来说,它不知道自己被哪些子模块继承了,对于子POM来说,它必须知道自己的父POM是谁;

在一些最佳实践中我们会发现:一个POM既是聚合POM,又是父POM,这么做主要是为了方便。

链接:https://www.cnblogs.com/sxpy-lj/p/7251418.html

一、继承

为了避免重复。通过继承拥有Parent项目中的配置。

https://www.cnblogs.com/xdp-gacl/p/4058008.html

<!--子工程POM   继承父工程-->    
<parent>    
    <artifactId>父artifactId</artifactId>    
    <groupId>父groupId</groupId>    
    <version>父version</version>    
    <relativePath>父pom.xml的相对路径</relativePath>    
</parent>  

二、聚合

主要为了快速构建项目,可以一次构建所有子模块。

https://www.cnblogs.com/xdp-gacl/p/4058008.html

//聚合工程 POM  (module的值为子模块项目目录相对于聚合工程POM的路径)
<modules>
    <module>子artifactId01</module>
   <module>子artifactId02</module>
</modules>

三、解决多个子模块依赖某个子模块的版本统一的问题

  如果一个项目有多个子模块,而且每个模块都需要引入依赖,但为了项目的正确运行,必须让所有的子项目(以下子项目即指子模块)使用依赖项的版本统一,才能保证测试的和发布的是相同的结果。

  Maven 使用 dependencyManagement 来统一模块间的依赖版本问题。

  子模块中引用一个依赖而不用显式列出版本号,Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在dependencyManagement元素中指定的版本号。

// 聚合工程 (同时也是父工程)
// 以下两个 子模块依赖的 javaee-api 版本均为 ${javaee-api.version}
<groupId>父groupId</groupId>
<artifactId>父artifactId</artifactId>
<version>父version</version>
<packaging>pom</packaging>  

<modules>
    <module>子artifactId01</module>
   <module>子artifactId02</module>
</modules>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>${javaee-api.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
// 子模块01 

<!--继承父工程-->
<parent>
    <artifactId>父artifactId</artifactId>
    <groupId>父groupId</groupId>
    <version>父version</version>
    <relativePath>父pom.xml的相对路径</relativePath>
</parent>

<groupId>子groupId01</groupId>
<artifactId>子artifactId01</artifactId>
<packaging>jar</packaging>

<!--依赖关系-->
<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
    </dependency>
</dependencies> 
// 子模块02 

<!--继承父工程-->
<parent>
    <artifactId>父artifactId</artifactId>
    <groupId>父groupId</groupId>
    <version>父version</version>
    <relativePath>父pom.xml的相对路径</relativePath>
</parent>

<groupId>子groupId02</groupId>
<artifactId>子artifactId02</artifactId>
<packaging>jar</packaging>

<!--依赖关系-->
<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
    </dependency>
</dependencies> 

https://blog.csdn.net/qq_39940205/article/details/80307795

  • dependencyManagement 特性

https://blog.csdn.net/wanghantong/article/details/36427411

在dependencyManagement中配置的元素既不会给parent引入依赖,也不会给它的子模块引入依赖,仅仅是它的配置是可继承的

原文地址:https://www.cnblogs.com/badboyh2o/p/10840921.html

时间: 2024-10-09 07:16:35

011.maven 继承与聚合的相关文章

maven in action(五)maven继承和聚合

问题的提出: 当一个项目依赖多个其他项目或者模块的时候,可以A模块引用了junit jar,B模块也引用了junit jar,而这个项目依赖于A.B模块,这样就没有必要重复添加junit jar坐标依赖.这时候,我们可以单独的一个项目来管理jar的坐标依赖,也就是下面要说的依赖的继承. 继承 面向对象思想中有继承,子类继承父类不是私有的方法和属性. 在maven中的继承,我们可以抽取出所有公共的jar坐标,然后建立一个parent的项目,该项目中仅包含有一个pom.xml文件,并且parent项

Maven快速使用教程(六) Maven继承和聚合

maven聚合和继承

Java-Maven(七):Eclipse中Maven依赖、聚合、继承特性

之前通过学习了解,maven集成到eclipse中的如何创建项目,以及maven命令插件在eclipse中安装后的用法.那么接下来我们将会学习一些maven在项目中的一些特性,及如何使用. Maven依赖特性 Maven聚合特性 Maven继承特性

项目构建之maven篇:7.聚合与继承

聚合: 为方便项目构建,通常将聚合模块放在项目目录的最顶层,其他模块则作为聚合模块的子目录存在, 这样我们得到源码的时候,最快发现的是聚合模块的pom 运行命令 查看结果 源代码下载 继承 创建parent项目,用于被继承 parent/pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

maven 继承关系和聚合

maven继承管理 让版本的管理只在一个地方改变 modules用于聚合,把执行的项目都放到同一的地方用module包括,可以省去一个个项目去mvn install,这样可以所有项目一次聚合 mvn install 传递性依赖原则: A-->BA-->C 1.路径最近者优先2.路径相同,第一声明者优先 注意:1.dependencyManagement中定义的依赖子module不会共享2.dependencies中定义的依赖子module可以共享 dependencyManagement的使用

maven中的继承和聚合的关系

maven中的继承和聚合的关系:两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置.聚合:定义一个聚合模块,然后在pom文件中添加<module></module>标签,其中的内容是模块相对于当前模块的路径.那么在构建聚合模块的时候,在<module>中定义的模块也会跟着构建,不用逐个构建,因此加快了构建速度.继承:除了定义一个父模块,在父模块的pom文件中添加<module>标签,还要在子模块pom文件中添加<parent

Maven中的继承和聚合

一. 继承和聚合 1. 什么是继承? maven为了消除重复,把很多相同的配置提取出来, 放入一个父项目的pom.xml中 例如:grouptId,version等 2. 什么是聚合? 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 <modules> <module>-</module> </modules> 3. 继承与聚合的关系 继承主要为了消除重复 聚合主要为了快速构建项目 二. 继承聚合配置 1. 聚合配置代码: <mod

Eclipse下Maven工程多模块继承和聚合的创建

使用Maven对项目进行管理的时候,多模块的继承和聚合是必不可少的,本文简要说明一下在eclipse IDE下创建多模块工程. 1.Maven多模块的聚合 一个Maven工程下创建多个模块,然后用一个专门管理模块来将实际应用到的模块组织起来. 2.Maven多模块的继承 子模块通过继承父模块,来获的父模块中的pom.xml配置信息. 3.Maven多模块的继承+聚合 上图是将1和2组合起来,可以将父模块作为聚合模块和父模块,这样父模块就可以聚合(组织)其子模块,子模块可以继承父模块. 4.聚合和

Maven的使用《二》之依赖、继承、聚合

问题?Maven的使用<二>之依赖.继承.聚合 前面已经讲到了环境的搭建(环境搭建链接),这里就不重复了.下面的主要是对依赖.继承.聚合详细说明. 这里用的编译软件是eclipse,要装maven的插件(下载地址和安装方法:点击下载链接). 然后装完后,这个时候插件已经在Preference里面了,但是插件还不能用,需要我们做一些设置. 一般来说,做到这里就可以用了.但是我在用的过程中会出现这样的一种错误(点击查看链接),经过查询资料,已经得到了很好的解决办法.做下面设置(把jir改成jdk格