基于Apache Maven构建多模块项目

news2024/11/27 22:35:06

title: 基于Apache Maven构建多模块项目
date: 2022-04-10 00:00:00
tags:

  • Apache Maven
  • 多模块
    categories:
  • Maven

请添加图片描述

介绍

  • 多模块项目由管理一组子模块的聚合器 POM 来构建。在大多数情况下聚合器位于项目的根目录中,并且必须是 pom 类型的项目。
  • 子模块是常规的 Maven 项目,它们可以单独构建,也可以通过聚合器 POM 构建。
  • 通过聚合器 POM 构建项目时会一并构建下属的所有子模块。

多模块的优势

  • 减少重复
  • 共享依赖项和配置文件

父 POM

  • 可以创建自己的 pom.xml 文件,并作为父项目。
  • 在每个子模块的 pom.xml 文件中声明对父 POM 的继承依赖关系。
  • 父项目中另外也要声明其所属的子模块。
  • 父项目也可以单继承另一个父项目。

构建应用程序

设想这个应用程序包含四个模块,它们分别是:

模块名称独立部署说明
commons公共子模块
service业务逻辑子模块
webWeb服务子模块
job后台任务子模块

创建父POM

  1. 新增一个常规项目 msa-order
  2. 在 pom.xml 文件中增加 <packaging>pom</packaging>
  3. 声明子模块中需要复用的依赖或配置,例如:
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.6.6</version>
  <relativePath/>
</parent>

<properties>
  <java.version>11</java.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
  </dependency>
</dependencies>

创建子模块

  1. 依次创建四个常规项目
  2. 在父 pom.xml 文件的 modules 元素中添加子模块
<modules>
  <module>commons</module>
  <module>service</module>
  <module>web</module>
  <module>job</module>
</modules>
  1. 在各个子模块的 pom.xml 文件中添加对父项目的依赖
<parent>
  <artifactId>msa-order-parent</artifactId>
  <groupId>com.tianmingxing.demo</groupId>
  <version>1.0.0-SNAPSHOT</version>
</parent>

构建项目

  1. 在父项目下执行 mvn package,这将构建所有模块其输出如下:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for msa-order 1.0.0-SNAPSHOT:
[INFO] 
[INFO] msa-order .......................................... SUCCESS [  0.003 s]
[INFO] commons ............................................ SUCCESS [  1.625 s]
[INFO] service ............................................ SUCCESS [  0.056 s]
[INFO] web ................................................ SUCCESS [  0.891 s]
[INFO] job ................................................ SUCCESS [  0.110 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
  1. 构建顺序:
  • 项目依赖于构建中的另一个模块
  • 插件声明,其中插件是构建中的另一个子模块
  • 插件依赖于构建中的另一个模块
  • 构建中另一个模块的构建扩展声明
  • <modules> 元素中声明的顺序
  1. 可以指定构建的模块,例如本次只想构建web子模块以及它依赖的其它模块,则可以使用命令 mvn -DskipTests=true package -pl web -am

源码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel数据整理:合并计算快速查看人员变动

相信大家平时在整理数据时&#xff0c;都会对比数据是否有重复的地方&#xff0c;或者该数据与源数据相比是否有增加或者减少。数据量不大还好&#xff0c;数据量大的话&#xff0c;对比就比较费劲了。接下来我们将进入数据对比系列课程的学习。该系列一共有两篇教程&#xff0…

ESP8266 + STC15+ I2C OLED带网络校时功能的定时器时钟

ESP8266 + STC15+ I2C OLED带网络校时功能的定时器时钟 📍相关篇《ESP8266 + STC15基于AT指令通过TCP通讯协议获取时间》 📌ESP8266 AT固件基于安信可AT固件,相关刷AT固件可以参考《NodeMCU-刷写AT固件》 🔖STC15 单片机采用的是:STC15F2K60S2 晶振频率采用内部:22.11…

Java面试——多线程并发篇

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

滑动窗口算法

滑动窗口 滑动窗口有俩种&#xff1a;定窗口和不定窗口。滑动窗口说白了就是双指针的运用。 定窗口说明是一个特定窗口大小&#xff0c;通常用来解决相邻的元素&#xff0c;最大值&#xff0c;最小值。 不定窗口说的是&#xff0c;先由右指针去找到第一个能够符合题意的位置…

【微信小程序】在WXML文件中显示JS文件中全局变量的方法

前言我们知道在wxml中可以通过数据绑定的方法来获取到js文件中data里面的数据&#xff0c;并且显示到wxml界面&#xff0c;那么我们该如何在wxml中显示js文件里面的全局变量呢&#xff1f;显示data里面数据的方法在wxml种我们可以显示js代码中data代码段中的变量。具体的操作是…

《跃迁:从技术到管理的硅谷路径》读后感

一、技术管理 1.技术管理包含两层含义&#xff1a; 一层是管理自己和团队的技术&#xff0c;进行技术选型&#xff0c;在正确的场景使用最适合的技术&#xff0c;保证程序简捷、强壮、可维护&#xff0c;最终完成产品的上线另一层是管理技术团队&#xff0c;帮助团队成员成长…

【面试题】2023 vue高频面试知识点汇总

一、MVVM原理在Vue2官方文档中没有找到Vue是MVVM的直接证据&#xff0c;但文档有提到&#xff1a;虽然没有完全遵循MVVM模型&#xff0c;但是 Vue 的设计也受到了它的启发&#xff0c;因此在文档中经常会使用vm(ViewModel 的缩写) 这个变量名表示 Vue 实例。为了感受MVVM模型的…

十二款硬盘数据恢复软件!恢复数据,最适合你的是这一款

硬盘数据发生丢失&#xff0c;通过快捷键、回收站、备份都无法恢复回来。对于电脑小白来说&#xff0c;最好的方法就是通过专业软件恢复数据。市面上很多硬盘数据恢复软件&#xff0c;我们大多不清楚它们有哪些功能&#xff0c;好不好用。 为此&#xff0c;我尝试了十二款数据…

雪花算法snowflake

snowflake中文的意思是 雪花&#xff0c;雪片&#xff0c;所以翻译成雪花算法。它最早是twitter内部使用的分布式环境下的唯一ID生成算法。在2014年开源。雪花算法产生的背景当然是twitter高并发环境下对唯一ID生成的需求&#xff0c;得益于twitter内部高超的技术&#xff0c;雪…

【从头开始】Java基础Day05

面向对象、三大特性、异常处理Day05面向对象构造器创建对象内存分析封装继承Super关键字重写多态instanceofStatic详解抽象类接口异常ErrorExceptionError和Exception的区别异常处理机制自定义异常类实际应用中关于异常的总结Day05 面向对象 面向对象编程的本质就是&#xff1…

在这些工厂、农田、服务区,看到智能中国的草蛇灰线

今天&#xff0c;应该很少人会怀疑&#xff0c;以AI、5G、云计算等新一代技术为核心的第四次工业革命&#xff0c;将发生在中国。正如保尔芒图在《十八世纪产业革命》中写道的那样&#xff1a;大工业的特殊性&#xff0c;并不是一下子就显露出来的。一开始&#xff0c;只是城市…

如何将VirtualBox虚拟机转换到VMware中

转换前的准备 首先需要你找到你的virtualbox以及VM安装到哪个文件夹里了&#xff0c;需要将这两个文件夹添加进环境变量Path中。 如果你记不清了&#xff0c;可以用everything全局搜索一下“VBoxManage.exe’以及“vmware-vdiskmanager.exe”&#xff0c;看一眼这个程序放到哪…

推荐几个好用的在线代码编译器

程序员最喜欢用的在线IDE代码编译器&#xff0c;功能很强大&#xff0c;类别很全&#xff01; 1.网址https://tech.io/snippet 支持 20 种编程语言&#xff0c;页面上没有杂七杂八的东西&#xff0c;非常简约&#xff0c;非常干净&#xff0c;另外&#xff0c;它上面的代码段…

UE4:使用样条生成随机路径,并使物体沿着路径行走

一、关于样条的相关知识 参考自&#xff1a;样条函数 - 馒头and花卷 - 博客园 三次样条&#xff08;cubic spline&#xff09;插值 - 知乎 B-Spline(三)样条曲线的性质 - Fun With GeometryFun With Geometry 个人理解的也不是非常深&#xff0c;但是大概要知道的就是样条具…

【C++实现红黑树】

文章目录一、红黑树的概念及性质二、红黑树节点的定义三、红黑树的插入四、红黑树的验证五、完整代码六、总结一、红黑树的概念及性质 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一…

时间短/背景弱/获两国邀请函如期赴日本工程院士麾下访学

K老师因省公派要求&#xff0c;年底必须出国&#xff0c;除了申请还要办理各种派出手续&#xff0c;时间很紧张。本人为讲师&#xff0c;硕士学位&#xff0c;且没有论文及课题项目作为依托&#xff0c;学术背景较弱。通过努力&#xff0c;我们分别获得了美国夏威夷大学马诺阿分…

花了5年时间,用过市面上95%的工具,终于找到这款万能报表工具

经常有粉丝问我有“哪个报表工具好用易上手&#xff1f;”或者是“有哪些适合绝大多数普通职场人的万能报表工具&#xff1f;” 从这里我大概总结出了大家选择报表工具最期望满足的3点&#xff1a; &#xff08;1&#xff09;简单易上手&#xff1a;也就是所谓的学习门槛要低…

如何下载高程DEM

同步视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_下载高程等高线使用视频教程专题地图制作视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_地图数据应用&#xff08;制作地图效果的基本过程&#xff09;视频教程&#xff1a;如何选择中央子午线或者分度…

欧盟砍伐森林法规和遵守情况 用Dimitra技术解决森林砍伐问题

两千年前&#xff0c;西欧有80%的地区被列为森林。今天&#xff0c;这个数字只有34%。森林砍伐影响着这个星球上的每个人。它造成了大约10%的全球变暖。如果不设法解决森林砍伐问题&#xff0c;就不可能应对全球变暖。 毁林是有目的的清除林地的行为。此外&#xff0c;工业化农…

ChatGPT用不了,给你几个免费正常使用的

ChatGPT用不了&#xff0c;给你几个免费正常使用的 ChatGPT是由美国人工智能公司OpenAI开发和训练的&#xff0c;OpenAI的幕后老板是硅谷投资者山姆阿尔特曼和亿万富翁埃隆马斯克。马斯克曾在一篇推文中表示&#xff1a;ChatGPT好得吓人&#xff0c;我们距离优秀… 资源宝分享…