Maven的聚合工程搭建示意

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 聚合工程:指的是基于Maven工程的模块化开发。它的优势是: 目录清晰,方便管理 支持分开开发(团队) 便捷且统一的依赖版本管理。

聚合工程:指的是基于Maven工程的模块化开发。它的优势是:

  1. 目录清晰,方便管理
  2. 支持分开开发(团队)
  3. 便捷且统一的依赖版本管理
在实际中我是这样去理解的(可能有误,但我觉得思想是开放的,怎么样理解有道理就行)。

项目老大发了一个任务,他先做了如下几件事:

  1. 事先搭好了工程的结构并且指定了pom文件中的依赖管理
  2. 给每个人分配了底层的任务,例如:实体类、Mapper+测试、Service层、Controller...
  3. 由于每个人的工期是不同的,可能同时负责了多项项目,所以团队合作很可能是以一个阶梯执行的。

image.png

OK,接下去我们针对前面两件事情,来学习一下聚合工程。

步骤

新建工程

新建一个空的工程,指定使用maven作为包管理工具。

image.png

进入工程后,删除src目录,因为这是一个父工程,src是作为源代码目录,这里父工程并不做代码编辑,所以直接删除。

编辑pom文件 - 统一依赖管理

主流是使用SpringBoot开发,所以可以指定一个父目录的父亲:

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

properties标签中指定一下我们这个工程需要依赖的版本号,这个主要也是参考spring-boot-starter-parent的写法形式去做的,有兴趣的可以点开看看spring-boot-dependencies

这里为了后续介绍一个整合工程,先引入一些基础的包,并且指定他们的版本号:

  1. mybatis-plus:数据持久层框架
  2. knife4j:接口文档框架
  3. jwt:jwt安全认证
  4. fastjson:json格式转换
<properties>
    <java.version>1.8</java.version>
    <mybatis-plus.version>3.4.1</mybatis-plus.version>
    <mysql.version>8.0.30</mysql.version>
    <knife4j.version>3.0.3</knife4j.version>
    <jwt.version>0.9.1</jwt.version>
    <fastjson.version>2.0.21</fastjson.version>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

这样做的目的是,先确定这个工程依赖的包是不存在冲突的。

这样做还不够,这样做只是指定了版本号,就和定义了变量一样,为了后续的工程引入该依赖配置时不再放入版本号,我们还需要编写dependencyManagement标签。

<dependencyManagement>
    <dependencies>
        <!--mybatis-plus 持久层-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!--knife4j-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>${knife4j.version}</version>
        </dependency>
        <!--jjwt-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jwt.version}</version>
        </dependency>
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

这样就已经实现了后续子模块导入该依赖时不再需要指定版本号

新建模块 - 分配任务

如图依次点击

image.png

这里举一个例子,其他步骤是一样的。关键的地方就是看清楚Parent写的是父工程中对应的artifactId

image.png

验证:在父工程中可以看见一个蓝色向下的箭头:

image.png

这表示该工程下已经创建了一个独立的子模块。

然后将这些模块从低向下的工作顺序分配出去即可。子模块之间可以通过在dependencies中写入其他子模块的描述(如下),进行依赖,例如:service层依赖mapper

<dependency>
    <groupId>top.chengyunlai</groupId>
    <artifactId>mapper</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
68 0
|
5月前
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
75 0
|
7月前
|
缓存 Java 关系型数据库
【超全详解】Maven工程配置与常见问题解决指南
检查Maven配置包括验证路径、设置pom.xml与Project Structure的Java版本。基本操作有`clean-compile`、`install`和`package`,其中`install`会将jar包放入本地仓库。获取他人工程后需修改配置、清除缓存、更新依赖等。配置文件应从Maven Repository找寻,选择稳定高版本。创建Maven工程可选archetype如`quickstart`或直接创建Java工程。基本目录结构遵循分层设计原则,常见问题包括假性导包、端口占用、时区问题等,对应解决方案包括删除本地仓库文件、调整系统设置或重新加载项目。
1169 6
【超全详解】Maven工程配置与常见问题解决指南
|
6月前
|
SpringCloudAlibaba Java Maven
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
|
6月前
|
Java 应用服务中间件 API
eclipse创建 maven-web工程
eclipse创建 maven-web工程
|
7月前
|
Java 项目管理 Maven
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
Maven的聚合和继承是Java开发中重要的概念。聚合允许将多个项目组合成一个构建单元,简化多模块项目的构建过程,提高构建效率。继承则让子项目重用父项目的配置和属性,避免了重复定义,增强了项目的一致性和可维护性。通过聚合和继承,Maven为多模块项目的构建和管理提供了高效且灵活的支持,减少了配置冗余,提升了开发效率。
146 0
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
|
7月前
|
IDE Java 数据库连接
maven篇2:手动创建maven工程
maven篇2:手动创建maven工程
maven篇2:手动创建maven工程
|
7月前
|
Java Maven 开发者
Maven高级-聚合与继承 私服(图文并茂)
Maven高级-聚合与继承 私服(图文并茂)
75 0
|
7月前
|
Java Maven
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
69 0