何为继承?
--›继承为了消除重复,我们把很多相同的配置提取出来
--›例如:grouptId,version等

就像写java程序一样,对于有共性切重复的东西,就提取出来。

如有三个pom.xml配置文件,

Hello/pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.winner.maven</groupId>
  4. <artifactId>Hello</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <name>Hello</name>
  7.  
  8. <dependencies>
  9. <dependency>
  10. <groupId>junit</groupId>
  11. <artifactId>junit</artifactId>
  12. <version>4.9</version>
  13. <scope>test</scope>
  14. </dependency>
  15.  
  16. </dependencies>
  17. </project>

HelloFriend/pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.winner.maven</groupId>
  4. <artifactId>HelloFriend</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <name>HelloFriend</name>
  7.  
  8. <dependencies>
  9. <dependency>
  10. <groupId>junit</groupId>
  11. <artifactId>junit</artifactId>
  12. <version>4.9</version>
  13. <scope>test</scope>
  14. </dependency>
  15.  
  16. <dependency>
  17. <groupId>com.winner.maven</groupId>
  18. <artifactId>Hello</artifactId>
  19. <version>0.0.1-SNAPSHOT</version>
  20. <scope>compile</scope>
  21. </dependency>
  22.  
  23. </dependencies>
  24. </project>

MakeFriends/pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <groupId>com.winner.maven</groupId>
  6. <artifactId>MakeFriends</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9.  
  10. <name>MakeFriends</name>
  11. <url>http://maven.apache.org</url>
  12.  
  13. <properties>
  14. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15. </properties>
  16.  
  17. <dependencies>
  18. <dependency>
  19. <groupId>junit</groupId>
  20. <artifactId>junit</artifactId>
  21. <version>4.9</version>
  22. <scope>test</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>com.winner.maven</groupId>
  26. <artifactId>HelloFriend</artifactId>
  27. <version>0.0.1-SNAPSHOT</version>
  28. <scope>compile</scope>
  29. </dependency>
  30. </dependencies>
  31. </project>

这三个配置文件中有很多重复的代码。

新建一个Maven工程Parent,里面不需要代码,只是配置里面的pom.xml文件。

注意:
1.dependencyManagement中定义的依赖子module不会共享。
2.dependencies中定义的依赖子module可以共享。

Parent/pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <groupId>com.winner.maven</groupId>
  6. <artifactId>Parent</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <!-- 父工程的打包方式必须是pom,不能是jar -->
  9. <packaging>pom</packaging>
  10.  
  11. <name>Parent</name>
  12. <url>http://maven.apache.org</url>
  13.  
  14. <properties>
  15. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  16. </properties>
  17.  
  18. <dependencyManagement>
  19.  
  20. <dependencies>
  21. <dependency>
  22. <groupId>junit</groupId>
  23. <artifactId>junit</artifactId>
  24. <version>4.9</version>
  25. <scope>test</scope>
  26. </dependency>
  27. <dependency>
  28. <groupId>com.winner.maven</groupId>
  29. <artifactId>Hello</artifactId>
  30. <version>0.0.1-SNAPSHOT</version>
  31. <scope>compile</scope>
  32. </dependency>
  33. <dependency>
  34. <groupId>com.winner.maven</groupId>
  35. <artifactId>HelloFriend</artifactId>
  36. <version>0.0.1-SNAPSHOT</version>
  37. <scope>compile</scope>
  38. </dependency>
  39. </dependencies>
  40. </dependencyManagement>
  41. </project>

Hello/pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <artifactId>Hello</artifactId>
  4. <name>Hello</name>
  5. <parent>
  6. <groupId>com.winner.maven</groupId>
  7. <artifactId>Parent</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <relativePath>../Parent/pom.xml</relativePath>
  10. </parent>
  11. <dependencies>
  12. <!-- 相比以前不用写版本了,版本号写在父pom中,统一管理 -->
  13. <dependency>
  14. <groupId>junit</groupId>
  15. <artifactId>junit</artifactId>
  16. </dependency>
  17. </dependencies>
  18. </project>

HelloFriend/pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <artifactId>HelloFriend</artifactId>
  4. <name>HelloFriend</name>
  5.  
  6. <parent>
  7. <groupId>com.winner.maven</groupId>
  8. <artifactId>Parent</artifactId>
  9. <version>0.0.1-SNAPSHOT</version>
  10. <relativePath>../Parent/pom.xml</relativePath>
  11. </parent>
  12. <dependencies>
  13. <dependency>
  14. <groupId>junit</groupId>
  15. <artifactId>junit</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>com.winner.maven</groupId>
  19. <artifactId>Hello</artifactId>
  20. </dependency>
  21. </dependencies>
  22. </project>

MakeFriends/pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <artifactId>MakeFriends</artifactId>
  6. <packaging>jar</packaging>
  7.  
  8. <name>MakeFriends</name>
  9. <url>http://maven.apache.org</url>
  10.  
  11. <properties>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. </properties>
  14.  
  15. <parent>
  16. <groupId>com.winner.maven</groupId>
  17. <artifactId>Parent</artifactId>
  18. <version>0.0.1-SNAPSHOT</version>
  19. <relativePath>../Parent/pom.xml</relativePath>
  20. </parent>
  21.  
  22. <dependencies>
  23. <dependency>
  24. <groupId>junit</groupId>
  25. <artifactId>junit</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>com.winner.maven</groupId>
  29. <artifactId>HelloFriend</artifactId>
  30. </dependency>
  31. </dependencies>
  32. </project>
何为聚合?
›--如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合
›--<modules>
  <module>…</module>
 </modules>
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <groupId>com.winner.maven</groupId>
  6. <artifactId>Parent</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <!-- 父工程的打包方式必须是pom,不能是jar -->
  9. <packaging>pom</packaging>
  10.  
  11. <name>Parent</name>
  12. <url>http://maven.apache.org</url>
  13.  
  14. <properties>
  15. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  16. </properties>
  17.  
  18. <modules>
  19. <module>../Hello</module>
  20. <module>../HelloFriend</module>
  21. <module>../MakeFriends</module>
  22. </modules>
  23.  
  24. <dependencyManagement>
  25.  
  26. <dependencies>
  27. <dependency>
  28. <groupId>junit</groupId>
  29. <artifactId>junit</artifactId>
  30. <version>4.9</version>
  31. <scope>test</scope>
  32. </dependency>
  33. <dependency>
  34. <groupId>com.winner.maven</groupId>
  35. <artifactId>Hello</artifactId>
  36. <version>0.0.1-SNAPSHOT</version>
  37. <scope>compile</scope>
  38. </dependency>
  39. <dependency>
  40. <groupId>com.winner.maven</groupId>
  41. <artifactId>HelloFriend</artifactId>
  42. <version>0.0.1-SNAPSHOT</version>
  43. <scope>compile</scope>
  44. </dependency>
  45. </dependencies>
  46. </dependencyManagement>
  47. </project>

Maven中聚合与继承的更多相关文章

  1. 你分得清楚Maven的聚合和继承吗?

    用了 Maven 好几年了,许多人还是只懂得简单的依赖坐标.对于 Maven 的聚合和继承还是一知半解,甚至很多人以为是同一个东西.但其实聚合是用于快速构建项目,是表示项目与子项目之间的关系.而继承则 ...

  2. Maven之 聚合与继承 详解

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

  3. maven的聚合与继承5

    一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module&g ...

  4. maven的聚合和继承

    Maven的聚合特性能够把项目的各个模块聚合在一起构建: 而Maven的继承特性则能帮组抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能促进各个模块配置的一致性. 聚合:新建一个项目demo ...

  5. Maven入门-5.Maven的聚合和继承

    1.Maven的聚合1.1 聚合的配置2.Maven的继承2.1 可被继承的POM元素2.2 POM中使用继承2.3 继承dependency 1.Maven的聚合 在Maven入门-4.Maven的 ...

  6. Maven学习总结(七):Maven的聚合和继承

    一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module&g ...

  7. 【maven】---聚合和继承

    前言 自从我知道写maven实战这本书的作者长得随心所欲后,我再拿起这本书真心的不想看前言了.下面分享一下maven中的所谓的聚合和继承. 内容 下文中的子本指的是:多个maven项目. 父本指的是: ...

  8. Maven 梳理 -聚合与继承

    一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module&g ...

  9. maven工程聚合和继承的意义

    聚合的意义: 对于一个大型的项目,如果我们直接作为一个工程开发,由于相互之间的依赖我们只能从头到尾由一组人开发,否则就会出现一个类好多人开发,相互更改的混乱局面,这个时候我们就将项目进行了横向和纵向的 ...

随机推荐

  1. mouseover,mouseout,mouseenter,mouseleave的区别

    相信做前端开发的都听说过“冒泡型事件”吧,<JavaScript高级程序设计>第九章有详细的讲述,但是,在学习的时候一知半解,也没详细去理解,导致最近在工作中碰到了问题:有许多 li 标签 ...

  2. Android 源码编译及常见错误及解决方法

    最近要往arm开发板上移植android系统,大大小小的问题遇到了太多太多,都是泪啊.本人初接触嵌入式开发,对问题的根源不是太了解,不过好在每解决一个问题,便记录一下.话不多说,正式罗列问题: hos ...

  3. 何谓IOC的核心思想

    IOC(Inversion of Control)即控制反转,是在面试或平常交流中经常遇到了词汇:我也曾经仿照Spring,利用JDK的反射和动态代理实现了一个简单的IOC框架,感觉算是知其然也知其所 ...

  4. 实验一:点亮led

    一.先看原理图:

  5. PHP 魔术方法 __get __set (二)

    慢慢长寻夜,明月高空挂 __get() - 读取不可访问属性的值时,__get() 会被调用 __set() - 在给不可访问属性赋值时,__set() 会被调用 <?php /** * 清晰的 ...

  6. 解决backbone url请求中参数有中文,存入数据库是乱码

    最近项目用到了backbone 做前后端的分离方案,遇见了中文乱码问题,解决方案总结如下: 假设需要存一条课程记录到后台   model定义如下: var AddCourse= Backbone.Mo ...

  7. JS如何获取iframe内html的body值

    default页面: <html> <head> <script type="text/javascript"> window.onload=f ...

  8. 转发 PHP 资料(一)

    WebShell隐藏思路.webshell磁盘读写动态检测.webshell沙箱动态检测(2)   作为WebShell检测.CMS修复.WebShell攻防研究学习的第二篇文章 本文旨在研究Webs ...

  9. C++程序员笔试复习概要(一)

    第8章     类和对象的创建 [内容提要] 类和对象 构造函数和析构函数 对象数组与对象指针 静态成员 友元 静态函数 虚函数 [重点与难点] 8.1 类和对象 8.1.1 类的定义 类实质上是用户 ...

  10. MySQL 5.1.63 单机配置多实例(简单配置)

    需求: 在一台服务器上通过源码编译安装一个版本为5.1.63版本MySQL数据库: 方案:将所有配置文件与数据等均存放在/home/zhaoshuangshuang下.在同一个MySQL中运行两个实例 ...