位置: IT常识 - 正文

Maven 聚合工程的创建(java聚合工程)

编辑:rootadmin
简单场景举例 聚合工程创建示例 说明: 创建 Maven Project:表示创建 maven 项目,new Project 方式创建 创建 Maven Module:表示创建 maven 项目,new Module 方式创建 创建 SpringBoot Module:表示创建 SpringBoot ... 简单场景举例

推荐整理分享Maven 聚合工程的创建(java聚合工程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java聚合工程,maven聚合工程打包,maven聚合工程的优点和缺点,maven聚合工程打包,maven聚合和继承区别,maven聚合工程的好处,maven聚合工程打包,maven聚合工程的好处,内容如对您有帮助,希望把文章链接给更多的朋友!

聚合工程创建示例

说明:

创建 Maven Project:表示创建 maven 项目,new Project 方式创建创建 Maven Module:表示创建 maven 项目,new Module 方式创建创建 SpringBoot Module:表示创建 SpringBoot 项目,new Module 方式创建

注意:各个子工程的包名要保持一致

创建 Maven Project,命名 parent-project,删除 src 目录,pom 中添加 packing 标签,指定打包类型为 pom,此项目作为父工程,不写代码,做依赖管理。

在父工程 parent-project 下,创建 Maven Module,命名 common-project,此项目作为公共工程,写那些可复用的代码功能,打包安装后供其他子工程模块复用。

说明:在公共工程中书写代码后,使用侧边栏 maven 管理 Lifecycle 中 install 命令进行打包安装,在其他子工程中直接添加该公共工程的依赖即可复用其中的代码功能。

在父工程 parent-project 下,创建 SpringBoot Module,命名 a-project,此项目作为子工程,写功能代码,同时,可复用公共工程 common-project。(子模块 pom 中添加公共模块依赖坐标即可在工程中复用功能代码)

说明:

创建 SpringBoot 项目时,项目 pom 中可能会有指向 spring-boot-starter-parent 的父依赖存在,也可能没有。

详细参考:https://blog.51cto.com/u_15692960/5405687

子工程 pom 整理说明:

如果创建的子工程有 parent 标签且继承的是 spring-boot-starter-parent,则直接将其剪切到父工程中;

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.6</version></parent>

如果创建的子工程没有 parent 标签继承的 spring-boot-starter-parent,则代表项目本身已做相关配置,不需要该父依赖,不需要做其他处理,此步骤忽略!

注意:有无 parent 标签可能是 SpringBoot 项目创建的方式不同(国内和国外方式)

将 common-project 中 parent 标签(含父工程坐标)复制一份到本子工程中【也就是添加父依赖,继承父工程】

删除自己的 groupId 和 version

Maven 聚合工程的创建(java聚合工程)

确保父工程 pom 的 modules 中有本子模块,没有则手动添加

将子工程中公共的配置挪到父工程中,如需要交给父工程管理的依赖、一些 properties 以及 build 等公共配置

PS:其他子工程如 b-project 和 c-project 的创建和整理步骤同 a-project。

以上,聚合工程创建完成。

以下展示聚合工程各工程模块中 pom 示例:

【实际开发,接口应用子工程创建一个 SpringBoot 项目即可,其他公共子工程皆使用 maven 创建】

目录总览:(实际开发应该是父工程下多个公共工程,一个应用接口启动工程)

parent-project:父工程common-project:公共工程a-project:子工程 ab-project:子工程 bc-project:子工程 c

parent-project 的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 有教程有,有教程没有,看是否能正常启动再决定是否添加 --> <!--<parent>--> <!-- <groupId>org.springframework.boot</groupId>--> <!-- <artifactId>spring-boot-starter-parent</artifactId>--> <!-- <version>2.6.6</version>--> <!--</parent>--> <!-- 父工程坐标 --> <groupId>com.luis</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <!-- 必须 --> <packaging>pom</packaging> <!-- 子模块 --> <modules> <module>common-project</module> <module>a-project</module> <module>b-project</module> <module>c-project</module> </modules> <!-- 设置相关属性 --> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.7.RELEASE</spring-boot.version> </properties> <!-- 公共依赖 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <!-- 依赖管理,配置对应 jar 包版本--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 相关插件 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.7.RELEASE</version> <configuration> <mainClass>com.luis.AProjectApplication</mainClass> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>

common-project 的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父工程 --> <parent> <artifactId>parent-project</artifactId> <groupId>com.luis</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>common-project</artifactId></project>

a-project 的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父工程 --> <parent> <artifactId>parent-project</artifactId> <groupId>com.luis</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>a-project</artifactId> <dependencies> <!-- common-project 依赖--> <dependency> <groupId>com.luis</groupId> <artifactId>common-project</artifactId> <version>1.0.0</version> </dependency> </dependencies></project>

b-project 的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父工程 --> <parent> <artifactId>parent-project</artifactId> <groupId>com.luis</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>b-project</artifactId> <dependencies> <!-- common-project 依赖--> <dependency> <groupId>com.luis</groupId> <artifactId>common-project</artifactId> <version>1.0.0</version> </dependency> </dependencies></project>

c-project 的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父工程 --> <parent> <artifactId>parent-project</artifactId> <groupId>com.luis</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>c-project</artifactId> <dependencies> <!-- common-project 依赖--> <dependency> <groupId>com.luis</groupId> <artifactId>common-project</artifactId> <version>1.0.0</version> </dependency> </dependencies></project>其他说明

注意:各个子工程的包名要保持一致

在父工程 pom 的 dependencies 标签中添加的依赖,在其所有子工程中都有,而且和父工程依赖的版本完全一致。

在父工程 pom 的 dependencyManagement 标签中添加的依赖,子工程中默认是没有的。

但是,如果子工程中需要使用,则直接在其 dependencies 标签中添加即可,此时可不指定版本号,默认使用的是父类中指定的版本号。

若子工程不想使用父类中指定的版本号,则自己需要明确指定所用依赖的版本号。

父工程的标志:pom 中存在 modules 和 packing 标签,且 packaging 标签中打包类型必须为 pom。

子工程的标志:pom 中 存在 parent 标签,且标签内坐标指向父工程。

dependencyManagement 和 dependencies 组件区别:

dependencyManagement 组件用来申明依赖,但不导入;dependencies 组件用于导入依赖子项目不会继承 dependencyManagement 组件中
本文链接地址:https://www.jiuchutong.com/zhishi/304552.html 转载请保留说明!

上一篇:In Java, how do I read/convert an InputStream to a String? Stack Overflow

下一篇:vue3 Element Plus按钮点击之后颜色不会还原的解决方案(element ui vue 3)

  • 苹果手机以前下载的软件在哪里找(苹果手机以前下过的APP在哪找)

    苹果手机以前下载的软件在哪里找(苹果手机以前下过的APP在哪找)

  • 淘宝问大家在哪里看(淘宝问大家在哪里回复买家)

    淘宝问大家在哪里看(淘宝问大家在哪里回复买家)

  • 10086怎么添加亲情号码(10086怎么添加亲情号码发什么)

    10086怎么添加亲情号码(10086怎么添加亲情号码发什么)

  • 华为p40pro拍照教程是什么(华为p40pro拍照怎样)

    华为p40pro拍照教程是什么(华为p40pro拍照怎样)

  • 未安装任何音频输出设备什么意思(未安装任何音频输出设备怎么安装)

    未安装任何音频输出设备什么意思(未安装任何音频输出设备怎么安装)

  • 产生磁盘碎片的主要原因一般包括下载和(磁盘碎片产生什么零碎的文件)

    产生磁盘碎片的主要原因一般包括下载和(磁盘碎片产生什么零碎的文件)

  • xp系统开机无桌面图标

    xp系统开机无桌面图标

  • 朋友圈点头像为什么会抖(朋友圈点了头像)

    朋友圈点头像为什么会抖(朋友圈点了头像)

  • 抖音上传画质不清晰怎么办(抖音上传画质不好怎么办)

    抖音上传画质不清晰怎么办(抖音上传画质不好怎么办)

  • 苹果手表配对不上(苹果手表配对不成功显示无线网络不好)

    苹果手表配对不上(苹果手表配对不成功显示无线网络不好)

  • 资源管理器中不能对文件进行什么操作(资源管理器中不能按什么方式排列图标)

    资源管理器中不能对文件进行什么操作(资源管理器中不能按什么方式排列图标)

  • 机顶盒怎么调分辨率(机顶盒分辨率怎么调)

    机顶盒怎么调分辨率(机顶盒分辨率怎么调)

  • 火山怎么自己制作音乐(火山制作方法)

    火山怎么自己制作音乐(火山制作方法)

  • 华为手机设置多任务(华为手机设置多个计时器)

    华为手机设置多任务(华为手机设置多个计时器)

  • vivoy93支不支持闪充(vivoy93支不支持NFC)

    vivoy93支不支持闪充(vivoy93支不支持NFC)

  • 备忘录背景图片怎么弄(备忘录背景图片库)

    备忘录背景图片怎么弄(备忘录背景图片库)

  • oppoa57有没有按键灯(oppoa57按键怎么设置)

    oppoa57有没有按键灯(oppoa57按键怎么设置)

  • 怎么增加手机内存(更换手机后如何删除旧手机上内容)

    怎么增加手机内存(更换手机后如何删除旧手机上内容)

  • 用户画像是通过cookie统计的吗(用户画像原理)

    用户画像是通过cookie统计的吗(用户画像原理)

  • 手机号怎么保存到卡上(手机号怎么保存到手机卡上)

    手机号怎么保存到卡上(手机号怎么保存到手机卡上)

  • oppo充电提示usb传文件(oppo充电提示音设置了为什么不响)

    oppo充电提示usb传文件(oppo充电提示音设置了为什么不响)

  • ai教育什么意思(ai教育主要是什么课程)

    ai教育什么意思(ai教育主要是什么课程)

  • Linux系统下转换文件编码的方法小结(linux转换windows)

    Linux系统下转换文件编码的方法小结(linux转换windows)

  • 笔记本电池保养中的几个误区(笔记本电池保养注意事项)

    笔记本电池保养中的几个误区(笔记本电池保养注意事项)

  • 苹果手机录音怎么转换成文字详细教程(苹果手机录音怎么转换成mp3格式)

    苹果手机录音怎么转换成文字详细教程(苹果手机录音怎么转换成mp3格式)

  • matcli.exe是什么进程 有什么用 matcli进程查询(mrmactl.exe)

    matcli.exe是什么进程 有什么用 matcli进程查询(mrmactl.exe)

  • 房产税如何申报流程
  • 应纳税所得额的会计分录
  • 收款金额比开票金额少是对方扣的手续费
  • 公司注销,账务怎么处理
  • 利润分配在利润表里填哪一项
  • 福利费专票进项可以抵扣吗
  • 应收利息和利息收入的关系
  • 旅行社团队意识
  • 收到保险公司开票怎么做账
  • 企业资产永久或实质性损害如何进行所得税处理
  • 商业零售企业实行增值税后购进商品业务的账务处理
  • 未计提企业所得税怎么写分录
  • 已经开具的增值发票
  • 境外企业开票没有税号怎么办?
  • 离职补偿金excel公式
  • 小规模纳税人代理记账流程
  • 哪些进项税额不允许从销售额中抵扣?
  • 小规模核定征收税率
  • 可转债转换为股权投资的企业所得税处理
  • 汽车发票金额怎么算
  • 第三方派遣劳务不续签补偿金哪边出
  • 工程承包款要交多少税
  • 房产税如何进行计提
  • 建筑公司分包
  • 剑灵怎么截图正版
  • php匹配邮箱
  • 私营合伙企业个税怎么算
  • qconsvc.exe - qconsvc是什么进程 有什么作用
  • 电脑一开机一会一会黑屏
  • 八个与cpu相关的字符
  • 良心推荐博主
  • lstm多对多
  • 巴伐利亚州地图
  • 海关专用缴款书认证的步骤和说明
  • PHP:imagecreatefromgif()的用法_GD库图像处理函数
  • 偏食和挑食会有什么不良后果?
  • php连接mysql8.0
  • 独立费用包括
  • php中函数定义没有返回值类型
  • vue3用法
  • 固定资产改造费用化账务处理
  • 研发 专利
  • ps位图矢量化
  • 租赁增值税发票税率
  • 公司的银行账号是不是和个人账号不一样
  • 包含个人社保的保险
  • 生产型企业可以买进就卖出吗
  • sql语句中的decode函数
  • sql2005使用
  • 成本票和进项票举例说明
  • 现金流量表现金净增加额负数
  • 国家税务总局公告2011年第25号公告
  • 技术服务收入属于销售营业收入吗
  • 收不回来的问题
  • 积分换购怎么做账
  • 长期借款的账务处理会计分录
  • 塔吊租赁和购买的区别
  • 企业当年实现的净利润即为企业当年可供分配的利润
  • 一般纳税人暂估入库的会计分录怎么写
  • 生产性生物资产折旧计入什么科目
  • 下列sql server语句中出现语法错误的是
  • sql server 2005数据备份
  • sql查询生成器
  • mysql 绿色版安装
  • mysql优化sql有哪些
  • mac系统怎么清理Adobe残留
  • nwtray.exe - nwtray是什么进程 作用是什么
  • 怎样查看windows10版本
  • windows中创建的任务计划可以多久执行一次任务?
  • 可以自己做手写的软件
  • shell脚本判断一个字符串是否为空
  • 删除了c盘安全组或用户
  • 注册表cmd
  • 用&lt;TABLE&gt;语句来实现圆角表格可以省去制作圆角图片之苦!
  • jquery使用css
  • python调用python代码
  • androidobb
  • 房地产开发商要交哪些税和费用
  • 国家税务局文件查询
  • 汽车燃油税每年要交吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设