简单场景举例
文章插图
聚合工程创建示例
说明:
注意:各个子工程的包名要保持一致
- 创建 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 中添加公共模块依赖坐标即可在工程中复用功能代码)
说明:
子工程 pom 整理说明:
创建 SpringBoot 项目时,项目 pom 中可能会有指向 spring-boot-starter-parent 的父依赖存在 , 也可能没有 。
详细参考:https://blog.51cto.com/u_15692960/5405687
- 如果创建的子工程有 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
- 确保父工程 pom 的 modules 中有本子模块,没有则手动添加
- 将子工程中公共的配置挪到父工程中,如需要交给父工程管理的依赖、一些 properties 以及 build 等公共配置
- 如果创建的子工程有 parent 标签且继承的是
- 以上,聚合工程创建完成 。
【实际开发,接口应用子工程创建一个 SpringBoot 项目即可,其他公共子工程皆使用 maven 创建】
目录总览:(实际开发应该是父工程下多个公共工程 , 一个应用接口启动工程)
- parent-project:父工程
- common-project:公共工程
- a-project:子工程 a
- b-project:子工程 b
- c-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>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- springboot项目整合-注册功能模块开发
- 三、Ocelot请求聚合与负载均衡
- 研发效能|DevOps 已死平台工程永存带来的焦虑
- 3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架
- maven 重复依赖不同版本 选择规则
- 锤子手机怎么样,功能都实用吗(锤子手机怎么进入工程模式)
- 二 网络工程知识VLAN的基础和配置:802.1q帧;Access、Trunk、Hybrid接口工作模式过程与配置;VLANIF的小实验
- Dubbo 03: 直连式 + 接口工程
- 创建SpringMVC工程
- 1 Java I/O:模型与流