maven中如何使用聚合模块,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
聚合模块为项目目录的最顶层,其他模块作为聚合模块子目录而存在。目的是为一次构建多个项目模块。
我自己化了一个关于项目的关系:
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>
5. <groupid>com.sohu.train</groupid>
6. <artifactid>maven-aggregate</artifactid>
7. <version>0.0.1-SNAPSHOT</version>
8. <packaging>pom</packaging>
10. <!-- 子模块 指定项目pom的位置 ..代表上一级目录-->
11. <modules>
12. <module>../maven-01</module>
13. <module>../maven-02</module>
14. <module>..maven-03</module>
15. </modules>
17.
对 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的子模块,分了很多子模块:
pom继承是为了抽出重复配置,通常配置在父模块中,为子模块提供使用,这样可以做到“一处声明,处处使用”。
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>
5. <groupid>com.sohu.train</groupid>
6. <artifactid>maven-aggregate</artifactid>
7. <version>0.0.1-SNAPSHOT</version>
8. <packaging>pom</packaging>
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>
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.
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.
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4157404/blog/3086340