位置: 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)

  • 华为nova9是什么处理器(华为nova9是什么充电口)

    华为nova9是什么处理器(华为nova9是什么充电口)

  • 手机调字体大小在哪里(vivo手机调字体大小)

    手机调字体大小在哪里(vivo手机调字体大小)

  • 虚拟内存有什么用(虚拟内存有什么缺点)

    虚拟内存有什么用(虚拟内存有什么缺点)

  • 苹果指纹无法触控id(苹果指纹无法触摸怎么办)

    苹果指纹无法触控id(苹果指纹无法触摸怎么办)

  • 申请淘宝网店要钱吗(淘宝注册网店需要交钱吗)

    申请淘宝网店要钱吗(淘宝注册网店需要交钱吗)

  • 华为手机怎样取消应用加密(华为手机怎样取卡出来的视频)

    华为手机怎样取消应用加密(华为手机怎样取卡出来的视频)

  • 荣耀8屏幕多大(华为荣耀8的手机屏幕有多大)

    荣耀8屏幕多大(华为荣耀8的手机屏幕有多大)

  • 机箱有轻微震动电脑就重启(机箱有轻微震动电脑就黑屏)

    机箱有轻微震动电脑就重启(机箱有轻微震动电脑就黑屏)

  • 5g的三大技术分别是哪些(5g的3大技术)

    5g的三大技术分别是哪些(5g的3大技术)

  • 强行关电脑的快捷键(强行关机电脑怎么关)

    强行关电脑的快捷键(强行关机电脑怎么关)

  • 微信朋友圈一条杠是删了还是屏蔽了(微信朋友圈一条线是不是已经被删除)

    微信朋友圈一条杠是删了还是屏蔽了(微信朋友圈一条线是不是已经被删除)

  • 抖音可以投屏到网络电视上吗?(抖音可以投屏到电视吗)

    抖音可以投屏到网络电视上吗?(抖音可以投屏到电视吗)

  • vivo手机有没有语音唤醒功能(vivo手机有没有红外线遥控功能)

    vivo手机有没有语音唤醒功能(vivo手机有没有红外线遥控功能)

  • 安卓备忘录怎么添加图片(安卓备忘录怎么转到苹果)

    安卓备忘录怎么添加图片(安卓备忘录怎么转到苹果)

  • 拼多多店铺id怎么查询(拼多多店铺id在哪里可以看到)

    拼多多店铺id怎么查询(拼多多店铺id在哪里可以看到)

  • 京东怎么延长收货(京东上怎么延长收货时间)

    京东怎么延长收货(京东上怎么延长收货时间)

  • 抖音实名认证完要多久(抖音实名认证完不能玩小游戏)

    抖音实名认证完要多久(抖音实名认证完不能玩小游戏)

  • 小米6x支持多少w快充(小米6x支持33w快充吗)

    小米6x支持多少w快充(小米6x支持33w快充吗)

  • 红外幕帘探测器干嘛用的(红外幕帘探测器能录像吗)

    红外幕帘探测器干嘛用的(红外幕帘探测器能录像吗)

  • 华为p30pro曲面屏容易碎吗(华为p30pro曲面屏价格)

    华为p30pro曲面屏容易碎吗(华为p30pro曲面屏价格)

  • 腾讯微云如何加密(腾讯微云如何加快下载速度)

    腾讯微云如何加密(腾讯微云如何加快下载速度)

  • win7系统截屏键(win7截屏键ctrl加什么)

    win7系统截屏键(win7截屏键ctrl加什么)

  • tim在线是什么(tim各种在线状态解读)

    tim在线是什么(tim各种在线状态解读)

  • (HOTA)多目标跟踪MOT指标计算方法(多目标pso)

    (HOTA)多目标跟踪MOT指标计算方法(多目标pso)

  • 前端JavaScript初学者提升前端技能必须要练习的15个项目推荐,赶快收藏!!!(javascript前端开发案例教程源码)

    前端JavaScript初学者提升前端技能必须要练习的15个项目推荐,赶快收藏!!!(javascript前端开发案例教程源码)

  • 审计合同需要交税吗
  • 存量房地产转让土地增值税
  • 生产企业出口自产的小汽车
  • 水利建设基金怎么交
  • 摊销无形资产商标权计入什么科目
  • 超过认证期的发票能用吗
  • 餐饮流水账表格excel
  • 资金结存科目余额对应
  • 软件开发增值税免税吗
  • 慈善捐款抵税的会计分录
  • 土地使用权评估原则
  • 结存材料物资会计分录怎么做?
  • 现金余额大违反了什么规定
  • 购买的固定资产没有使用,是否计提折旧
  • 出口没做免税申报怎样补税?
  • 成本法和权益法大白话
  • 技术维护费280全额抵扣会计分录
  • 电子发票没有纳税人识别号有效吗
  • 农产品普通发票抵扣怎么申报
  • 固定资产折旧年限的最新规定2023
  • 知识产权代理公司怎么盈利
  • 以前年度的费用可以入在当年吗?
  • 价外收入是什么意思
  • 销售电梯并安装如何缴纳增值税
  • 清算期间未申报债权
  • 转让技术所有权是什么收入
  • Win11 Build 10.0.22000.51 预览版ISO镜像下载汇总(苹果M1也可用)
  • 缴纳印花税怎么算
  • mac big sur 菜单栏
  • windows 11怎么用
  • PHP:mb_ereg_replace()的用法_mbstring函数
  • 组策略阻止了这个程序0x800704ec
  • 外购货物用于职工福利进项税额可以抵扣吗
  • 股权和债权有无区别
  • php require include
  • 医疗保险在外地交了老家还要交吗
  • 结存材料实际成本例题
  • windows不能打开exe文件
  • html可以描述什么
  • 安装多版本chrome
  • 微信小程序项目中的 ______ 文件是全局配置文件
  • remote远程
  • 人力资源企业税收风险
  • 为什么印花税不算应交税费科目
  • 花生油代加工厂
  • 限定性和非限定性资产的区别
  • 结转清理损失会计分录
  • access2010宏操作大全
  • 帝国cms建站实例教程
  • 用友应收系统凭证冲销后查询不到怎么办
  • 综合单价税率调整如何结算
  • 企业报税表格填写
  • 小规模纳税人企业所得税2023
  • 出口退税一般风险商品
  • 进项税额转出结转还是红冲
  • 对于相关人员培训存在的问题
  • 其他应交款 其他应付款
  • 并购贷款是固定资产贷款吗
  • 进项都抵扣完了怎么做账
  • 行政事业单位如何开发票
  • 异地缴纳增值税和附加税的区别
  • 商品储存的基本要求是什么?
  • 融资租赁的固定资产视为企业自有固定资产管理
  • 分公司设立条件怎么写
  • mysql常用查询
  • mysql数据库用户名和密码怎么查看
  • rsyslog 8.11.0 (v8-stable) 发布
  • dhcp client服务无法启动1083
  • hyper-v是啥
  • windows疑难解答在哪里
  • linux纯文本浏览器
  • 右键回收站一直转圈
  • vue数组里面添加数组
  • javascript html5移动端轻松实现文件上传
  • unity更新下载文件
  • shell脚本监听端口
  • cocos2d-x安装
  • 成都水费查询系统
  • 首问责任制的概念
  • 环保税申报操作手册
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设