位置: IT常识 - 正文

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

发布时间:2024-01-23
简单场景举例 聚合工程创建示例 说明: 创建 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)

  • 苹果12是oled屏吗(iphone 12是oled吗)

    苹果12是oled屏吗(iphone 12是oled吗)

  • 声卡可以让声音变得好听吗(声卡可以让声音变得低沉吗)

    声卡可以让声音变得好听吗(声卡可以让声音变得低沉吗)

  • oppo手机怎么打开隐藏图标(oppo手机怎么打不出电话怎么回事)

    oppo手机怎么打开隐藏图标(oppo手机怎么打不出电话怎么回事)

  • 华为nova5如何清理垃圾(华为nova5i怎么清理垃圾)

    华为nova5如何清理垃圾(华为nova5i怎么清理垃圾)

  • 抖音哪里可以看访客记录(抖音哪里可以看注册时间)

    抖音哪里可以看访客记录(抖音哪里可以看注册时间)

  • win7右下角红x不能上网(win7右下角小电脑红叉)

    win7右下角红x不能上网(win7右下角小电脑红叉)

  • 为什么ipad录屏保存不了(为什么ipad录屏录着录着就没了)

    为什么ipad录屏保存不了(为什么ipad录屏录着录着就没了)

  • iqoo的ai键有什么用(iqooz1ai按键是什么)

    iqoo的ai键有什么用(iqooz1ai按键是什么)

  • 主卡可以查副卡的微信吗(主卡可以查副卡的通话记录吗)

    主卡可以查副卡的微信吗(主卡可以查副卡的通话记录吗)

  • qq邮箱是qq号码吗(qq邮箱号码是不是qq号)

    qq邮箱是qq号码吗(qq邮箱号码是不是qq号)

  • 苹果无指纹是什么意思(iphone 无指纹)

    苹果无指纹是什么意思(iphone 无指纹)

  • 钉钉能同时登录两个账号吗

    钉钉能同时登录两个账号吗

  • 淘宝收到货后怎么退货退款(淘宝收到货后怎么申请退款流程)

    淘宝收到货后怎么退货退款(淘宝收到货后怎么申请退款流程)

  • 快手添加的表情找不到(快手添加的表情在哪里)

    快手添加的表情找不到(快手添加的表情在哪里)

  • 华为手机已下载未安装在哪里找(华为手机已下载APp桌面上没有)

    华为手机已下载未安装在哪里找(华为手机已下载APp桌面上没有)

  • vivo水滴屏有几款(vivo水滴屏有哪几个型号)

    vivo水滴屏有几款(vivo水滴屏有哪几个型号)

  • 显示退款中是什么状态(申请退款一直显示退款中)

    显示退款中是什么状态(申请退款一直显示退款中)

  • 添加关键帧的作用(添加关键帧的快捷键是)

    添加关键帧的作用(添加关键帧的快捷键是)

  • 华为magic2滑盖寿命(荣耀magic2滑盖寿命测试)

    华为magic2滑盖寿命(荣耀magic2滑盖寿命测试)

  • ctrl+p是什么快捷键(ctrl+p快捷键的作用)

    ctrl+p是什么快捷键(ctrl+p快捷键的作用)

  • 快手戳一下代表什么意思(快手戳一下代表啥意思)

    快手戳一下代表什么意思(快手戳一下代表啥意思)

  • miui10基于安卓几(miui12基于安卓10)

    miui10基于安卓几(miui12基于安卓10)

  • 淘宝双十一活动几天(2022年淘宝双十一活动)

    淘宝双十一活动几天(2022年淘宝双十一活动)

  • 剪映怎么剪辑音乐长短(剪映怎么剪辑音频文件)

    剪映怎么剪辑音乐长短(剪映怎么剪辑音频文件)

  • 手机微博定时发送怎么设置(手机微博定时发送)

    手机微博定时发送怎么设置(手机微博定时发送)

  • microchip是什么品牌(micro chip)

    microchip是什么品牌(micro chip)

  • 手机图片保存了找不到(手机保存了图片找不到去哪里找)

    手机图片保存了找不到(手机保存了图片找不到去哪里找)

  • ufw命令  管理防火墙服务(ufw 设置)

    ufw命令 管理防火墙服务(ufw 设置)

  • 企业所得税更正申报要交滞纳金吗
  • 个人所得税手续费返还属于政府补助吗
  • 弃置费用的财务费用可以税前扣除吗
  • 初级职称需要进行继续教育吗
  • 哪些企业需要纳税
  • 经营所得与劳务所得的税率
  • 应收账款和应付账款的区别
  • 融资租赁购入固定资产的融资费用如何扣除
  • 出口退税自查中的“四自三不见”是指什么
  • 单品毛利计算公式怎么算
  • 劳动保护费在企业怎么交
  • 车辆增值税抵扣到什么时候结束
  • 公司支付个人劳务
  • 装修费算固定资产吗?
  • 长期待摊费用属于什么科目借贷方向
  • 增值税缴纳计入成本吗
  • 每股股份价格
  • 利润负数所得税怎么算
  • 企业所得税弥补
  • 年中建账损益类科目怎么录
  • 评标费由谁支付
  • 如何关闭edge浏览器下载保护
  • 生产领用产成品验证会计分录
  • win10系统如何在游戏中禁用输入法
  • 留抵增值税的会计处理
  • 公司招的兼职员工怎么报个税
  • windows10护眼色设置
  • php $_files
  • 交易性金融资产属于什么科目
  • 增值税一般纳税人认定标准
  • 土地价款会计分录
  • pa等比例缩放
  • 芒通,法国 (© Flavio Foglietta/Getty Images)
  • 索洛维茨在哪
  • 人工智能怎么做出来的
  • cmd 过滤命令
  • linux mail命令详解
  • 帝国cms怎么调用文章随机段落
  • mysql更新视图的方式
  • 进项税额抵减额怎么算
  • 非货币交易分录
  • 收外汇是一定要交税吗
  • 印花税怎么计算公式
  • 单位财务报销制度和流程
  • 金融商品转让一半增值税
  • 企业哪些进项税抵扣
  • 差旅费不抵扣
  • 企业制造费用包括
  • 小规模纳税人缴纳的增值税计入成本吗
  • 差旅费报销范围包括
  • 企业培训费怎么入账
  • 个人如何开增值税普通电子发票
  • 房屋估价需要准备什么
  • 开具红字发票抵扣后如何退税?
  • 生产车间包括什么
  • 进账单,其中有两个账户
  • 领用生产用原材料一批
  • 电子承兑汇票的承兑人是谁
  • 配件销售人员应该具备哪些能力
  • 电子监控系统安装与维修
  • 农民工工资专户怎么发放工资
  • mysql两种安装方式
  • mysql通过find_in_set()函数实现where in()顺序排序
  • centos安装编译环境
  • ubuntu 12.04 intel集成显卡设置分辨率的步骤分享
  • windows8怎么打开开始菜单
  • win7蓝屏怎么办
  • Win10 Build 14316启用Linux Bash 环境图文教程
  • cocos2dx 3.5 win7 eclipse 环境搭建及hello world
  • Android开发如何找到TextView指定文本
  • unicode 字符百科
  • android 生成图片
  • linux怎么使用c语言
  • canvas实例
  • java 调试
  • 如何给局长送点礼品
  • 查询发票号码
  • 内蒙民生认证系统
  • 依法行政的观念
  • 季度申报忘了报怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号