maven的聚合模块和pom继承使用
admin
2023-06-06 16:41:41
0

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

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

 

1.1 项目结构


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

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

 

1.2 pom标签配置-module下载 

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

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

  maven的聚合模块和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.0modelVersion>  

  4.   

  5.   <groupId>com.sohu.traingroupId>  

  6.   <artifactId>maven-aggregateartifactId>  

  7.   <version>0.0.1-SNAPSHOTversion>  

  8.   <packaging>pompackaging>  

  9.   

  10.     

  11.   <modules>  

  12.     <module>../maven-01module>  

  13.     <module>../maven-02module>  

  14.     <module>..maven-03module>  

  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的子模块,分了很多子模块:下载 

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

 

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.0modelVersion>  

  4.   

  5.   <groupId>com.sohu.traingroupId>  

  6.   <artifactId>maven-aggregateartifactId>  

  7.   <version>0.0.1-SNAPSHOTversion>  

  8.   <packaging>pompackaging>  

  9.   

  10.     

  11.   <modules>  

  12.     <module>../maven-01module>  

  13.     <module>../maven-02module>  

  14.     <module>../maven-03module>  

  15.   modules>   

  16.     

  17.   <properties>  

  18.     <junit.version>3.8.1junit.version>  

  19.   properties>  

  20.     

  21.     

  22.   <dependencyManagement>  

  23.     <dependencies>  

  24.         <dependency>  

  25.             <groupId>junitgroupId>  

  26.             <artifactId>junitartifactId>  

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

  28.             <scope>testscope>  

  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.0modelVersion>  

  4.       

  5.     <parent>  

  6.         <groupId>com.sohu.traingroupId>  

  7.         <artifactId>maven-aggregateartifactId>  

  8.         <version>0.0.1-SNAPSHOTversion>  

  9.         <relativePath>../maven-aggregate/pom.xmlrelativePath>  

  10.     parent>  

  11.     <artifactId>maven-03artifactId>  

  12.     <packaging>jarpackaging>  

  13.           

  14.     <dependencies>  

  15.         <dependency>  

  16.             <groupId>junitgroupId>  

  17.             <artifactId>junitartifactId>  

  18.         dependency>  

  19.     dependencies>  

  20. project>  

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

 


相关内容

热门资讯

《给阿嬷的情书》,票房超10亿... 据网络平台数据截至5月24日,2026年度电影总票房(含预售)已突破151亿元!其中,电影《给阿嬷的...
美媒称伊朗同意放弃高浓缩铀库存 新华社华盛顿5月23日电(记者黄强 颜亮)据美国媒体23日报道,作为美国与伊朗即将达成的协议中的一个...
全自动洗衣机进水管漏水怎么办 造成全自动洗衣机进水管漏水,要根据原因寻找解决办法,1、由于洗衣机进水管使用年限过长,部分出现损坏,...
电视机闪屏一下又黑屏 问答:1、电视显示屏出现短路或损坏等问题。2、电视的信号源出现干扰。3、电视内部的小零件损坏,如屏幕...
燃气灶点火又灭了怎么回事 原因可能是燃气管道堵塞,需要清理燃气管道,自己不会的话需要让专业的人来;还有可能是燃气灶电池没有电了...
林内热水器点火后一会又熄火 林内热水器不会无缘由的打火之后又熄火,因此需要注意检查这些方面:看热水器当中的水气联动装置,看看是不...
lg电视开机后屏闪一下就黑屏怎... 出现这种情况时,一般就是电视的启动瞬间电流过大造成的,当电流过大时,电视便会自动启动内部的保护机制,...
具身智能新场景浮现,行业等待商... 近日,他山科技发布视频介绍了AI触觉剥虾机,可以给大小不一的潜江小龙虾快速去头。而在浙江纺织业工厂,...
闭眼入不踩雷的日常实用手机推荐 在如今快节奏的生活中,选择一款日常使用方便的品牌手机显得尤为重要。它不仅需要满足工作、娱乐、社交等多...
在轨期间将新开展100余项科学... 图表来源:新华社 朱杨柱 张志远 黎家盈 5月23日上午,神舟二十三号载人飞行任务新闻发布会在...