前言

  • maven 3.5.0

maven 多模块项目关系

maven 多模块项目关系有2种,分别为:继承关系和聚合关系。

继承关系

具有继承关系的多模块项目结构如下:

my-project-inheritance|-- my-module|   `-- pom.xml`-- pom.xml

my-project-inheritance简称父项目,my-module简称子项目。
父项目的POM文件(my-project-inheritance/pom.xml)内容:

<project><modelVersion>4.0.0</modelVersion><groupId>com.mycompany.app</groupId><artifactId>my-project-inheritance</artifactId><version>1</version>
</project>

子项目的POM文件(my-project-inheritance/my-module/pom.xml)内容:

<project><parent><groupId>com.mycompany.app</groupId><artifactId>my-project-inheritance</artifactId><version>1</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.mycompany.app</groupId><artifactId>my-module</artifactId><version>1</version>
</project>

继承关系下,子项目可以继承父项目POM的某些属性。比如 groupId、version属性。因此,子项目可以利用继承关系将POM精简如下:

<project><parent><groupId>com.mycompany.app</groupId><artifactId>my-project-inheritance</artifactId><version>1</version></parent><modelVersion>4.0.0</modelVersion><artifactId>my-module</artifactId>
</project>

聚合关系

具有聚合关系的多模块项目结构如下:

my-project-aggregation|-- my-module|   `-- pom.xml`-- pom.xml

my-project-aggregation简称父项目,my-module简称子项目。
父项目的POM文件(my-project-aggregation/pom.xml)内容:

<project><modelVersion>4.0.0</modelVersion><groupId>com.mycompany.app</groupId><artifactId>my-project-aggregation</artifactId><version>1</version><modules><module>my-module</module></modules>
</project>

子项目的POM文件(my-project-aggregation/my-module/pom.xml)内容:

<project><modelVersion>4.0.0</modelVersion><groupId>com.mycompany.app</groupId><artifactId>my-module</artifactId><version>1</version>
</project>

聚合关系下,在父项目上调用maven命令时,也会同步在子项目上执行。比如在父项目上调用命令 mvn package, 也会同步在子项目上调用命令 mvn package

继承关系和聚合关系

如果多个Maven项目都有相似的配置,则可以使用继承关系。提取那些相似的配置到父项目。

如果多个Maven项目需要一起构建或处理,则可以使用聚合关系。在父项目中进行构建或处理即可。

多数情况下,多模块项目同时具有继承关系和聚合关系。

参考

http://maven.apache.org/guides/introduction/introduction-to-the-pom.html

maven 多模块项目关系相关推荐

  1. 【sprinb-boot】maven 多模块项目:单独 spring-boot:run 某个模块

    目录 前言 假设的 maven 多模块项目 模块关系1 模块关系2 模块关系3 模块关系4 示例:模块关系1 1,my-parent1/pom.xml 文件 2,my-parent1/my-app1/ ...

  2. maven 多模块项目:单独构建某个模块

    前言 maven 3.5.0 在maven 多模块项目中,使用-pl -am -amd等参数可以单独构建某个模块. maven 多模块项目关系 单独构建模块:module1 在父级项目目录中执行如下命 ...

  3. Maven多模块项目中应用maven-tomcat-plugin热部署

    Maven多模块项目中使用maven-tomcat-plugin热部署 比如有一个父模块xfl(类型为pom的maven项目),其中的pom.xml为: <modules> <mod ...

  4. eclipse创建maven多模块项目(单个类似)

    2019独角兽企业重金招聘Python工程师标准>>> 1.下载安装maven 1.1.下载 注意:maven的版本,要根据你的jdk版本来下载.要不会安装失败,提示版本问题哦 Jd ...

  5. maven多模块项目,多web合并项目使用心得

    Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow 此文章适合maven初学者或想接触maven的用户,讲的只是皮毛,高手请自觉略过 ...

  6. Maven多模块项目搭建

    要: Maven多模块项目搭建,可以通过合理的模块拆分,实现代码复用,便于维护管理,可以根据需要配置指定的模块. __kindeditor_temp_url__   http://git.oschin ...

  7. maven 多模块项目

    maven 多模块项目 项目结构 proj | |- proj-model |      | |      |- src |      |- pom (jar) |      | | |- proj- ...

  8. IDEA下Maven多模块项目介绍和搭建

    为什么80%的码农都做不了架构师?>>>    1Maven多模块项目介绍 为了便于演示和表达,在intellij中建了小项目进行举例,如下图所示 其中web-m2模块,依赖于com ...

  9. 在 IntelliJ IDEA 中创建基本的 Maven 多模块项目

    在 IntelliJ IDEA 中创建基本的 Maven 多模块项目 笔者的环境: Maven 3.6.3 JDK 11 IntelliJ IDEA 2020.2.2 (Ultimate Editio ...

最新文章

  1. @aspect注解类不生效_springboot:@Transactional注解 VS @Service注解
  2. 注释代码c语言,C/C++ 源文件删除注释代码
  3. 手机技巧:是否应该一次性给手机充电到100%?看完你就明白了!
  4. jquery动态绑定事件的方法_Jquery绑定事件及动画效果
  5. Windows 平台下的C++代理类(供C # 使用)
  6. python2.7入门---内置函数
  7. java数组硬盘读取,java中如何通过IO流将稀疏数组写入磁盘和从磁盘中读取,整行存,整行取...
  8. cocos2d-x关于CCTableView的“乱序问题”的理解
  9. DL_C2_week1_2(Regularization)L2,Drop_out正则化
  10. 开源APP源代码、游戏源代码
  11. matlab 双音多频 接收端检测到的号码,实验一数字信号处理在双音多频拨号系统中的应用.doc...
  12. python人民币转大写_python实现人民币大写转换
  13. 我有一个 APP 创意,如何将其实现?
  14. Kotlin 元编程(注解,反射)
  15. 如何提高个人执行力?
  16. 机器视觉学习资料了解
  17. this is a prerequisite condition to test whether the packagecompat-libstdc++-33-3.2.3-61.x86_64
  18. 开关电源:效率与VOUT的关系
  19. 传参时带有日期参数,@JsonFormat与@DateTimeFormat
  20. web低成本的安全登录方案

热门文章

  1. 研究人员发现利用Excel宏可发起跳板攻击
  2. [转]html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
  3. python 访问需要HTTP Basic Authentication认证的资源
  4. Windows操作系统启动介绍(二)
  5. 一本书让你懂得人生的价值
  6. 禁用Cookie在web浏览器中读取/写入c#应用程序
  7. RabbitMQ的消息确认ACK机制
  8. PHP.ini 中的错误提示
  9. git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚
  10. 如何使用soapUI模拟webservice客户端发送请求