maven的聚合模块和pom继承使用

原创 2016年08月31日 10:37:47

1.什么是maven的聚合模块?

聚合模块为项目目录的最顶层,其他模块作为聚合模块子目录而存在。目的是为一次构建多个项目模块。

 

1.1 项目结构


我自己化了一个关于项目的关系:

 

1.2 pom标签配置-module下载 

    maven-aggregate作为maven pom项目,需要定义pom.xml的 packaging 为 pom类型

    我们还是参照 maven的依赖特性,冲突解决(五) 创建 maven-01 maven-02  maven-03工程,通过maven-aggregate pom工程 对这三个maven项目做一个聚合,配置如下:

  

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.sohu.train</groupId>  
  6.   <artifactId>maven-aggregate</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>pom</packaging>  
  9.   
  10.   <!-- 子模块 指定项目pom的位置   ..代表上一级目录-->  
  11.   <modules>  
  12.     <module>../maven-01</module>  
  13.     <module>../maven-02</module>  
  14.     <module>..maven-03</module>  
  15.   </modules>   
  16.     
  17. </project>  

  

   对 maven-aggregate执行下mvn clean compile

  

Xml代码  下载 
  1. [INFO] Scanning for projects...  
  2. [WARNING]   
  3. [WARNING] Some problems were encountered while building the effective model for com.sohu.train:maven-02:jar:1.0-SNAPSHORT  
  4. [WARNING] 'dependencies.dependency.exclusions.exclusion.groupId' for junit:junit:jar is missing. @ line 38, column 16  
  5. [WARNING] 'dependencies.dependency.exclusions.exclusion.artifactId' for junit:junit:jar is missing. @ line 38, column 16  
  6. [WARNING]   
  7. [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.  
  8. [WARNING]   
  9. [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.  
  10. [WARNING]   
  11. [INFO] ------------------------------------------------------------------------  
  12. [INFO] Reactor Build Order:   //构建 maven 的反应堆,执行清理 编译的顺序  
  13. [INFO]   
  14. [INFO] maven-02  
  15. [INFO] maven-01  
  16. [INFO] maven-03  
  17. [INFO] maven-aggregate  
  18. [INFO]                                                                           
  19. [INFO] ------------------------------------------------------------------------  
  20. [INFO] Building maven-02 1.0-SNAPSHORT  
  21. [INFO] ------------------------------------------------------------------------  
  22. [INFO]   
  23. [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-02 ---  
  24. [INFO] Deleting E:\train\test\maven-02\target  
  25. [INFO]   
  26. [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-02 ---  
  27. [INFO] Using 'UTF-8' encoding to copy filtered resources.  
  28. [INFO] skip non existing resourceDirectory E:\train\test\maven-02\src\main\resources  
  29. [INFO]   
  30. [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-02 ---  
  31. [INFO] Changes detected - recompiling the module!  
  32. [INFO] Compiling 1 source file to E:\train\test\maven-02\target\classes  
  33. [INFO]                                                                           
  34. [INFO] ------------------------------------------------------------------------  
  35. [INFO] Building maven-01 1.0-SNAPSHOT  
  36. [INFO] ------------------------------------------------------------------------  
  37. [INFO]   
  38. [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-01 ---  
  39. [INFO] Deleting E:\train\test\maven-01\target  
  40. [INFO]   
  41. [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-01 ---  
  42. [INFO] Using 'UTF-8' encoding to copy filtered resources.  
  43. [INFO] Copying 1 resource  
  44. [INFO]   
  45. [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-01 ---  
  46. [INFO] Changes detected - recompiling the module!  
  47. [INFO] Compiling 1 source file to E:\train\test\maven-01\target\classes  
  48. [INFO]                                                                           
  49. [INFO] ------------------------------------------------------------------------  
  50. [INFO] Building maven-03 0.0.1-SNAPSHOT  
  51. [INFO] ------------------------------------------------------------------------  
  52. [INFO]   
  53. [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-03 ---  
  54. [INFO] Deleting E:\train\test\maven-03\target  
  55. [INFO]   
  56. [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-03 ---  
  57. [INFO] Using 'UTF-8' encoding to copy filtered resources.  
  58. [INFO] skip non existing resourceDirectory E:\train\test\maven-03\src\main\resources  
  59. [INFO]   
  60. [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-03 ---  
  61. [INFO] Changes detected - recompiling the module!  
  62. [INFO] Compiling 1 source file to E:\train\test\maven-03\target\classes  
  63. [INFO]                                                                           
  64. [INFO] ------------------------------------------------------------------------  
  65. [INFO] Building maven-aggregate 0.0.1-SNAPSHOT  
  66. [INFO] ------------------------------------------------------------------------  
  67. [INFO]   
  68. [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-aggregate ---  
  69. [INFO] ------------------------------------------------------------------------  
  70. [INFO] Reactor Summary:     // 可以看到 对3个maven项目 一起执行编译  
  71. [INFO]   
  72. [INFO] maven-02 ........................................... SUCCESS [  1.874 s]  
  73. [INFO] maven-01 ........................................... SUCCESS [  0.108 s]  
  74. [INFO] maven-03 ........................................... SUCCESS [  0.158 s]  
  75. [INFO] maven-aggregate .................................... SUCCESS [  0.002 s]  
  76. [INFO] ------------------------------------------------------------------------  
  77. [INFO] BUILD SUCCESS  
  78. [INFO] ------------------------------------------------------------------------  
  79. [INFO] Total time: 2.263 s  
  80. [INFO] Finished at: 2016-01-15T14:35:41+08:00  
  81. [INFO] Final Memory: 14M/227M  
  82. [INFO] ------------------------------------------------------------------------  
 这样我们就完成 maven对子模块的聚合 ,像我们平常用的dubbo jetty tomcat spring hibernate等等 都是按模块 去开发,一次编译 各个模块都能紧密联系在一起了。我们在平常开发项目也需要适当的去分模块开发,
这是dubbo的子模块,分了很多子模块:下载 

 

 

2.什么是pom继承?下载 

pom继承是为了抽出重复配置,通常配置在父模块中,为子模块提供使用,这样可以做到“一处声明,处处使用”。

2.1 继承结构

2.2 pom标签配置-parent,*Management

 1.常用的pom被继承的元素

 

Xml代码  下载 
  1. groupId :项目组 ID ,项目坐标的核心元素;    
  2. version :项目版本,项目坐标的核心元素;    
  3. description :项目的描述信息;    
  4. properties :自定义的 Maven 属性;    
  5. dependencies :项目的依赖配置;    
  6. dependencyManagement :醒目的依赖管理配置;    
  7. repositories :项目的仓库配置;    
  8. build :包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等;    

 

 1.配置maven-aggregate 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.sohu.train</groupId>  
  6.   <artifactId>maven-aggregate</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>pom</packaging>  
  9.   
  10.   <!-- 子模块 -->  
  11.   <modules>  
  12.     <module>../maven-01</module>  
  13.     <module>../maven-02</module>  
  14.     <module>../maven-03</module>  
  15.   </modules>   
  16.   <!-- 统一配置构件的版本号 -->  
  17.   <properties>  
  18.     <junit.version>3.8.1</junit.version>  
  19.   </properties>  
  20.     
  21.   <!-- 依赖管理 -->  
  22.   <dependencyManagement>  
  23.     <dependencies>  
  24.         <dependency>  
  25.             <groupId>junit</groupId>  
  26.             <artifactId>junit</artifactId>  
  27.             <version>${junit.version}</version>  
  28.             <scope>test</scope>  
  29.         </dependency>  
  30.     </dependencies>     
  31.   </dependencyManagement>  
  32. </project>  

 maven-01,maven-02,maven-03 需要配置parent ,dependencies,同时对junit做一个依赖,3个工程的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.     <!-- 指定父pom的坐标及pom位置 -->  
  5.     <parent>  
  6.         <groupId>com.sohu.train</groupId>  
  7.         <artifactId>maven-aggregate</artifactId>  
  8.         <version>0.0.1-SNAPSHOT</version>  
  9.         <relativePath>../maven-aggregate/pom.xml</relativePath>  
  10.     </parent>  
  11.     <artifactId>maven-03</artifactId>  
  12.     <packaging>jar</packaging>  
  13.         <!-- 添加对junit依赖,这样公用配置只需要在maven-aggregate中去配置 -->  
  14.     <dependencies>  
  15.         <dependency>  
  16.             <groupId>junit</groupId>  
  17.             <artifactId>junit</artifactId>  
  18.         </dependency>  
  19.     </dependencies>  
  20. </project>  

  这样就完成pom的继承,讲公用的jar一次配置,就可以实现多处引用了。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

maven pom聚合与继承

6、POM继承与聚合: 6.1、POM聚合模块: 在分布式架构,分模块化开发中,每个某块可能都是一个单独的maven项目,能够独立的进行项目构架,当模块比较多时,可以使用maven聚合聚合...

maven项目继承和聚合pom文件配置

Maven:项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具,maven因为自定义依赖包可以从本质上避免大项目时候可能涉及到的jar包污染。pom.xml文...

maven的pom.xml之聚合、继承、依赖

个人总结: 1.继承 (1)标签: (2)举例 com.tiantian.mavenTest projectA 1.0-SNAPSHOT ...

maven pom聚合与继承

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

Maven实战(六)--子模块的聚合和继承

通过个人的练习实例,来说明maven中聚合和继承。

Maven 的聚合(多模块)和 Parent 继承

即使是长期从事 Maven 工作的开发人员也不能完全掌握聚合(多模块)和 Parent 继承的关系,在使用多模块时,子模块总要指定聚合的 pom 为 。由于在大多数示例中都是这么写的,所以很难让人搞懂...

Maven模块聚合与继承

聚合假如有account-email和account-persist两个模块,我们想要一次构建这两个项目,这时需要用到聚合.聚合模块 package值必须为pom 必须有元素modules modul...

maven 为何要模块划分-聚合/继承

模块划分  为了防止传递依赖,我们各个模块之间尽量用直接依赖的方式。本篇文章介绍多模块化开发,我们做过Maven项目的都知道,我们的项目一般都是分模块的,每个模块都会对应着一个POM.xml文件,它...

maven 为何要模块划分-聚合/继承

模块划分 为了防止传递依赖,我们各个模块之间尽量用直接依赖的方式。本篇文章介绍多模块化开发,我们做过Maven项目的都知道,我们的项目一般都是分模块的,每个模块都会对应着一个POM.xml...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)