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

  • 苹果13怎么重启手机(苹果13手机怎么重新启动)

    苹果13怎么重启手机(苹果13手机怎么重新启动)

  • 华为nova7支持防水吗(华为nova7防遮挡在哪里)

    华为nova7支持防水吗(华为nova7防遮挡在哪里)

  • 微信掉线重新登咋回事(微信掉线重新登录后聊天记录能恢复吗)

    微信掉线重新登咋回事(微信掉线重新登录后聊天记录能恢复吗)

  • 手机的nfc功能用不了啊	(手机使用nfc功能)

    手机的nfc功能用不了啊 (手机使用nfc功能)

  • 快手流量券是什么意思(快手流量券是啥)

    快手流量券是什么意思(快手流量券是啥)

  • 光纤收发器ab端随便吗(锐捷光纤收发器ab端)

    光纤收发器ab端随便吗(锐捷光纤收发器ab端)

  • 在拼多多上买东西能被微信好友看到吗(在拼多多买东西被骗了怎样来维护自身的权益)

    在拼多多上买东西能被微信好友看到吗(在拼多多买东西被骗了怎样来维护自身的权益)

  • 全胶钢化膜会伤屏幕吗(全胶钢化膜会不会留胶)

    全胶钢化膜会伤屏幕吗(全胶钢化膜会不会留胶)

  • 备忘录怎么做成文件发送 (备忘录怎么做成文件发送)

    备忘录怎么做成文件发送 (备忘录怎么做成文件发送)

  • 手机微信运动怎么不显示步数(手机微信运动怎么关闭)

    手机微信运动怎么不显示步数(手机微信运动怎么关闭)

  • 2070s和2080s性能差距(2080s和2070s性能差距)

    2070s和2080s性能差距(2080s和2070s性能差距)

  • 拼多多月卡福利能领多少红包(拼多多月卡福利在哪)

    拼多多月卡福利能领多少红包(拼多多月卡福利在哪)

  • qq咋看不到好友签名了(qq怎么看不到好友)

    qq咋看不到好友签名了(qq怎么看不到好友)

  • 苹果手机怎样传应用到安卓手机(苹果手机怎样传照片到另一个手机)

    苹果手机怎样传应用到安卓手机(苹果手机怎样传照片到另一个手机)

  • b站签到在哪(b站 签到)

    b站签到在哪(b站 签到)

  • 下划线怎么设置一样长(红色下划线怎么设置)

    下划线怎么设置一样长(红色下划线怎么设置)

  • iphone8参数(iphone8参数配置)

    iphone8参数(iphone8参数配置)

  • iphone锁屏密码忘了怎么办(iphone锁屏密码忘记了怎样才能打开手机)

    iphone锁屏密码忘了怎么办(iphone锁屏密码忘记了怎样才能打开手机)

  • 为什么快手关注的人发作品看不到(为什么快手关注显示已达到上限)

    为什么快手关注的人发作品看不到(为什么快手关注显示已达到上限)

  • PS设计名片的尺寸多少合适(ps设计名片的尺寸)

    PS设计名片的尺寸多少合适(ps设计名片的尺寸)

  • 苹果6s如何无线充电(苹果6s无线局域网在哪里设置)

    苹果6s如何无线充电(苹果6s无线局域网在哪里设置)

  • 小米8充电异常(小米充电异常提示)

    小米8充电异常(小米充电异常提示)

  • qq克隆在哪(qq克隆在哪里关闭)

    qq克隆在哪(qq克隆在哪里关闭)

  • 怎么共享位置(vivo手机怎么共享位置)

    怎么共享位置(vivo手机怎么共享位置)

  • echarts-wordcloud 血泪总结使用说明 (配置项及其不足点优化)

    echarts-wordcloud 血泪总结使用说明 (配置项及其不足点优化)

  • nodejs和npm版本不匹配(node与nodejs)

    nodejs和npm版本不匹配(node与nodejs)

  • 人工智能里程碑ChatGPT之最全详解图解(人工智能lisp)

    人工智能里程碑ChatGPT之最全详解图解(人工智能lisp)

  • pyqt5在python中调出提示框(pyqt5 pycharm)

    pyqt5在python中调出提示框(pyqt5 pycharm)

  • 可以先抵扣下个月的进项票吗
  • 抵扣认证的发票开红字有影响吗
  • 收到红字进项发票需要认证么
  • 新会计准则 预付房租怎么做账
  • 合同资产减值准备怎么计提
  • 想开饮品店
  • 免征增值税企业进项税怎么处理
  • 已经报销的发票还会查吗
  • 去银行提取备用金开支票怎么填
  • 协会会费支出计什么科目
  • 防洪基金减免的会计分录怎么写?
  • 企业优化什么意思
  • 收到工程施工进度款如何记账
  • 工程收到收据没有发票的会计分录怎么做?
  • 提前预支了应得的工资犯法吗
  • 实收资本取出来要交税吗?
  • 0税率发票纳税申报如何填报
  • 定额发票使用年限规定
  • 2017年消费税税率
  • 小微企业减半征收印花税代码
  • 跨年补计提工资汇算清缴
  • 总部员工调往下属单位
  • 增加采购发票的方法
  • 人工成本全额扣除吗
  • 已经发货了点击确认收货可以吗?
  • 职工教育扣除标准是什么
  • 五金配件做什么科目
  • harmonyos怎么打开OTG
  • 工会经费会计分局
  • 有营业执照是否可以领失业金
  • win10应用商店没有软件库
  • 组策略在哪里
  • 其他综合收益属于什么类
  • macwifi配置
  • 同城票据清算和清算资金往来的区别
  • php变量使用之前需要定义变量类型
  • vue-introjs
  • css给div加边框
  • 网页制作零基础教程
  • 在岗职工平均工资和社平工资的区别
  • 运输发票的抵扣期限
  • 银行存款存款单丢了怎么办
  • BOM学习
  • 固定资产报废的请示
  • 报销替票的风险是什么
  • sqlserver设置简单模式
  • 取得抵债资产
  • 冲暂估的差异放在哪里
  • 上个季度增值税报错了
  • 收单清算款计入什么费用
  • 冲减上月收入会计分录
  • 租来设备本身原因致人损害
  • 多打的投资款怎么入账
  • 资产减值损失的账务处理
  • 事业单位会计岗位属于哪一类
  • 短期薪酬主要包括
  • casewhen嵌套查询
  • nvidia发布了G6X
  • windowsxp怎么用
  • 网卡驱动intel
  • 用户请愿地址曝露怎么办
  • oracle linux6.9
  • WinCinemaMgr.exe - WinCinemaMgr是什么进程
  • 苹果官网
  • Yosemite使用技巧 如何使用Yosemite mac信息功能共享电脑屏幕教程
  • macbook的dock栏
  • centos 安装选择
  • c:windowssys:em32mtgyu.dll 内存分配访问无效的解决办法
  • win8系统怎么到桌面
  • javascript异步编程
  • jquery取消单选框选中
  • python字典有什么用
  • jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
  • 普票怎么入账标识
  • 建安企业异地个税怎么交
  • 选矿比怎么算
  • 乌市沙区医保局电话是多少
  • 南昌契税政策
  • 企业改制和重组的区别
  • 全国税务稽查会议
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设