1有时候一个项目中有很多个模块,要想各个模块之间影响较小,可以将每个模块拿出来作为一个项目模块,对每个项目模块进行独立的开发。

2在这些过程中会遇到关于聚合和继承的问题。

3何为聚合?

A如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合,也就是说当我们点击一个pom的时候,同时运行多个项目模块。这时候要用到以下的标签,将各个项目模块整合在一起。

<modules>

<module>…</module>

</modules>

4何为继承

A继承是为了消除重复,我们把很多相同的配置提取出来。(这样的好处是:统一管理jar包,方便升级)

B例如:groupId,version等。

5聚合与继承的关系:

A聚合主要是为了快速构建项目

B继承主要是为了消除重复。

案例(先简单概括,后全部列出):

一:聚合配置代码(注意,下面这些代码在父项目模块中)

<modules>

<module>../Hello</module>

<module>../HelloFriend</module>

<module>../MakeFriends</module>

</modules>

注意:其中module的路径为相对路径。

二:继承配置代码(下面配置在各个子项目模块中)

<parent>

<groupId>cn.toto.maven</groupId>

<artifactId>Project</artifactId>

<version>0.0.1-SNAPSHOT</version>

<!—相对父pom的位置,也就是说通过下面的配置找到父pom的位置-->

<relativePath>../parent/pom.xml</relativePath>

</parent>

三、继承代码过程中,可以定义属性

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<junit.version>4.9</junit.version>

<maven.version>0.0.1-SNAPSHOT</maven.version>

</properties>

访问属性的方式为${junit.version},例如:

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>${junit.version}</version>

<scope>test</scope>

</dependency>

四:在父模块中用dependencyManagement进行管理(通过下面的配置可以知道每个模块是什么,同时:这样的好处是子模块可以有选择行的继承,而不需要全部继承)

<dependencyManagement>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>${junit.version}</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>cn.toto.maven</groupId>

<artifactId>HelloFriend</artifactId>

<version>${maven.version}</version>

<type>jar</type>

<scope>compile</scope>

</dependency>

</dependencies>

</dependencyManagement>

6实际案例进行说明

模块结构:

一:父模块(Parent):

模块结构:

<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>cn.toto.maven</groupId>

<artifactId>Parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>pom</packaging> <!---注意,这里要写成pom-->

<name>Parent</name>

<url>http://maven.apache.org</url>

<!—为实现聚合,点击这个pom.xml的时候四个同时运行--->

<modules>

<module>../Hello</module>

<module>../HelloFriend</module>

<module>../MakeFriends</module>

<module>../web</module>

</modules>

<!—属性配置--à

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<!—对所有模块进行统一的管理-à

<dependencyManagement>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.9</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>cn.itcast.maven</groupId>

<artifactId>HelloFriend</artifactId>

<version>0.0.1-SNAPSHOT</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>cn.itcast.maven</groupId>

<artifactId>Hello</artifactId>

<version>0.0.1-SNAPSHOT</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>cn.itcast.maven</groupId>

<artifactId>MakeFriends</artifactId>

<version>0.0.1-SNAPSHOT</version>

<scope>compile</scope>

</dependency>

</dependencies>

</dependencyManagement>

<distributionManagement>

<repository>

<id>releases</id>

<name>Internal Releases</name>

<url>http://localhost:8080/nexus-2.1.2/content/repositories/releases/</url>

</repository>

<snapshotRepository>

<id>snapshots</id>

<name>Internal Snapshots</name>

<url>http://localhost:8080/nexus-2.1.2/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

</project>

没有其它的代码了。

二:Hello模块pom.xml配置

<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中的pom.xml中有相关的配置-->

<artifactId>Hello</artifactId>

<name>Hello</name>

<parent>

<groupId>cn.itcast.maven</groupId>

<artifactId>Parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

<relativePath>../Parent/pom.xml</relativePath>

</parent>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</dependency>

</dependencies>

</project>

相关java代码略

三:HelloFriend(pom.xml)

<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>

<artifactId>HelloFriend</artifactId>

<name>HelloFriend</name>

<parent>

<groupId>cn.toto.maven</groupId>

<artifactId>Parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

<relativePath>../Parent/pom.xml</relativePath>

</parent>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</dependency>

<dependency>

<groupId>cn.toto.maven</groupId>

<artifactId>Hello</artifactId>

</dependency>

</dependencies>

</project>

MakeFriends(pom.xml配置)

<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>

<artifactId>MakeFriends</artifactId>

<name>MakeFriends</name>

<parent>

<groupId>cn.itcast.maven</groupId>

<artifactId>Parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

<relativePath>../Parent/pom.xml</relativePath>

</parent>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</dependency>

<dependency>

<groupId>cn.toto.maven</groupId>

<artifactId>HelloFriend</artifactId>

</dependency>

</dependencies>

</project>

相关java代码略

6.Maven聚合和继承,相关案例配置相关推荐

  1. Maven 聚合与继承

    Maven 聚合与继承 1. 背景 在这个技术发展飞速的时代,各类用户对软件的要求越来越高,软件本身也变得越 来越复杂.因此,软件设计人员往往会采用各种方式对软件划分模块,以得到更清晰的 设计及更高的 ...

  2. Maven聚合和继承

    Part one 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可以独立的编译和测试运行每个模块,但是随着项目的不断变大和复杂化,我们期望能 ...

  3. Maven学习总结(五)——聚合与继承

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1. ...

  4. Maven详解之聚合与继承

    Maven详解之聚合与继承 说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各 ...

  5. Maven学习总结(5)——聚合与继承

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1. ...

  6. Maven(3)--聚合与继承

    目录 聚合 重点: 继承 注意: 聚合与继承的关系区别 : 共同点 : Maven可继承的POM 元素 依赖管理 import依赖范围 插件管理 约定由于配置 反应堆 反应堆的构建顺序 裁剪反应堆 聚 ...

  7. Maven精选系列--继承与聚合

    转载自 Maven精选系列--继承与聚合 继承 什么是继承,我们可以定义项目的父类项目,用于继承父项目的依赖.插件.属性等信息. <parent> <groupId>com.a ...

  8. maven的聚合和继承详解(2021版)

    前言:日常开发中,两处常见的项目开发场景:多模块项目或者Springboot项目,都会用到Maven的聚合和继承,本篇博客就针对maven这两个技术点进行总结整理,希望能对你有所帮助! 在进入正题之前 ...

  9. Maven之聚合与继承

    Maven之坐标和依赖_jerry_dyy的博客-CSDN博客 Maven之仓库_jerry_dyy的博客-CSDN博客 Maven之聚合与继承_jerry_dyy的博客-CSDN博客 Maven之生 ...

最新文章

  1. python用户注册(基于django)
  2. tensorflow 使用
  3. 用WinEdt打开.tex文件显示error reading错误
  4. MemCache在win7上的可视化配置以及Nodejs/Net应用
  5. MassTransit Get Started-
  6. python模块使用相对路径还是绝对路径、哪种更好_python学习的第十八天模块之包、相对搜索路径和绝对搜索路径...
  7. Math: Fibonacci
  8. oracle subset-superset pairs,Oracle 字符集
  9. PTA:6-8 数组元素的区间删除 (20 分)
  10. 天猫旺铺装修的一些特殊代码 【持续收集中...】
  11. Kindeditor富文本使用
  12. 主力用计算机吸筹,主力底部吸筹 副图
  13. 青龙面板 企业微信应用推送
  14. 2020-02-08
  15. 34、CSS高频前端面试题之CSS基础
  16. Windows10安装Photoshop CC2018(PS)软件时关闭电脑防火墙
  17. pandas || df.dropna() 缺失值删除
  18. Java实现TCP的长短链接
  19. android 中怎么实现点击了对话框的按钮以后对话框不会消失,android 中怎么实现点击了对话框的按钮以后对话框不会消失...
  20. 视频弹幕技术 php,HTML5实现视频弹幕功能

热门文章

  1. 爬虫实战:使用Selenium爬取京东宝贝信息
  2. Java8 EnumMap 源码分析
  3. wxWidgets:操作档案manipulate archives的示例应用程序
  4. boost::polymorphic_get相关的测试程序
  5. boost::detail::sp_typeinfo_相关的测试程序
  6. boost::math::owens_t用法的测试程序
  7. boost::hana::minus用法的测试程序
  8. boost::edge_list用法的测试程序
  9. boost::endian模块宏BOOST_SCOPED_ENUM的测试程序
  10. GDCM:gdcm::PDFCodec的测试程序