千家信息网

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

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,1.什么是maven的聚合模块?聚合模块为项目目录的最顶层,其他模块作为聚合模块子目录而存在。目的是为一次构建多个项目模块。1.1 项目结构我自己化了一个关于项目的关系:1.2 pom标签配置-mod
千家信息网最后更新 2024年10月17日maven的聚合模块和pom继承使用

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

  4. <groupId>com.sohu.traingroupId>

  5. <artifactId>maven-aggregateartifactId>

  6. <version>0.0.1-SNAPSHOTversion>

  7. <packaging>pompackaging>

  8. <modules>

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

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

  11. <module>..maven-03module>

  12. modules>

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

  4. <groupId>com.sohu.traingroupId>

  5. <artifactId>maven-aggregateartifactId>

  6. <version>0.0.1-SNAPSHOTversion>

  7. <packaging>pompackaging>

  8. <modules>

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

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

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

  12. modules>

  13. <properties>

  14. <junit.version>3.8.1junit.version>

  15. properties>

  16. <dependencyManagement>

  17. <dependencies>

  18. <dependency>

  19. <groupId>junitgroupId>

  20. <artifactId>junitartifactId>

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

  22. <scope>testscope>

  23. dependency>

  24. dependencies>

  25. dependencyManagement>

  26. 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. <parent>

  5. <groupId>com.sohu.traingroupId>

  6. <artifactId>maven-aggregateartifactId>

  7. <version>0.0.1-SNAPSHOTversion>

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

  9. parent>

  10. <artifactId>maven-03artifactId>

  11. <packaging>jarpackaging>

  12. <dependencies>

  13. <dependency>

  14. <groupId>junitgroupId>

  15. <artifactId>junitartifactId>

  16. dependency>

  17. dependencies>

  18. project>

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


项目 配置 模块 代码 元素 工程 目录 开发 编译 坐标 常用 插件 标签 核心 结构 管理 平常 适当 醒目 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 诺亚之心服务器注册人数 旧服务器安全防护 数据库连接串查询 读写分离双主双从复制表到数据库 时序数据库查询最快 伽马数据库技术 2b2t服务器支持什么方式进入 数据库管理系统的发展模型 迅游科技网络安全 网络安全的例子有哪些IO个字 软件开发现状调查报告 万方数据库期刊查询需要注册吗 重启服务器可以释放c盘空间吗 温州app软件开发企业 软件开发培训开发 新会软件开发有限公司 系统软件开发师招聘 西安交通大学网络安全实验室 服务器被攻击后怎么防护 网络安全保障工程集成服务 杭州江干区直播软件开发 中国的网络安全防护比较薄弱 国内网络安全市场占有率 提高人民网络安全意识 网络安全手抄报字大 战地4服务器管理员设置血量 数据库的逻辑结构设计是指 用服务器的cpu装什么系统好 中北大学论文数据库 西安交通大学网络安全实验室
0