基于SpringBoot 2.3.7.RELEASE的Maven多模块项目构建极简教程

简介: 基于SpringBoot 2.3.7.RELEASE的Maven多模块项目构建极简教程

在搞懂Maven多模块应用开发前,建议阅读 该博客,夯实一下基础,其实也就是规范的问题,每个Maven项目标签的使用方式及含义。搞清楚后,对后面的项目创建就轻松很多。笔者已经将整个项目托管到Git仓库,点击此处访问 项目,下载导入IDE即可享用,逻辑是简单易理解的。


一、在初始化器上创建SpringBoot全局工程


1.1 阿里初始化器

1666245461054.jpg


1.2 填写配置清单

1666245469291.jpg


1.3 选择版本

1666245480009.jpg


1.4 填写工程名

1666245650322.jpg

此时看一下整个项目的目录:

1666245662226.jpg


1.5 裁剪项目文件

删除选中的文件

1666245754029.jpg


二、创建两个Maven子模块


2.1 创建demo-web模块

1666245826112.jpg

1666245826123.jpg

1666245826144.jpg


2.2 导入Spring Web依赖


在子模块的pom文件里添加如下依赖:


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.3 整个pom文件内容


<?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>demo</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>demo-web</artifactId>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

Maven会自动将子模块添加到主pom文件中。


2.4 创建demo-common模块


同demo-web子模块的创建一样,该模块用于提供通用工具类。


2.5 创建demo-common模块


三、子模块间的联系


3.1 web模块依赖common模块


在web模块的pom文件中引入common模块依赖:


<dependency>
   <groupId>com.example</groupId>
   <artifactId>demo-common</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</dependency>

3.2 Maven打包结果


[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] demo                                                               [pom]
[INFO] demo-common                                                        [jar]
[INFO] demo-web                                                           [jar]
[INFO] 
[INFO] --------------------------< com.example:demo >--------------------------
[INFO] Building demo 0.0.1-SNAPSHOT                                       [1/3]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.3.7.RELEASE:repackage (repackage) @ demo ---
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ demo ---
[INFO] Installing F:\respository\MultiModulesApp\pom.xml to E:\respository\com\example\demo\0.0.1-SNAPSHOT\demo-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] ----------------------< com.example:demo-common >-----------------------
[INFO] Building demo-common 0.0.1-SNAPSHOT                                [2/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ demo-common ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to F:\respository\MultiModulesApp\demo-common\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory F:\respository\MultiModulesApp\demo-common\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ demo-common ---
[INFO] Changes detected - recompiling the module!
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ demo-common ---
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ demo-common ---
[INFO] Building jar: F:\respository\MultiModulesApp\demo-common\target\demo-common-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.3.7.RELEASE:repackage (repackage) @ demo-common ---
[INFO] Attaching repackaged archive F:\respository\MultiModulesApp\demo-common\target\demo-common-0.0.1-SNAPSHOT-EXEC.jar with classifier EXEC
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ demo-common ---
[INFO] Installing F:\respository\MultiModulesApp\demo-common\target\demo-common-0.0.1-SNAPSHOT.jar to E:\respository\com\example\demo-common\0.0.1-SNAPSHOT\demo-common-0.0.1-SNAPSHOT.jar
[INFO] Installing F:\respository\MultiModulesApp\demo-common\pom.xml to E:\respository\com\example\demo-common\0.0.1-SNAPSHOT\demo-common-0.0.1-SNAPSHOT.pom
[INFO] Installing F:\respository\MultiModulesApp\demo-common\target\demo-common-0.0.1-SNAPSHOT-EXEC.jar to E:\respository\com\example\demo-common\0.0.1-SNAPSHOT\demo-common-0.0.1-SNAPSHOT-EXEC.jar
[INFO] 
[INFO] ------------------------< com.example:demo-web >------------------------
[INFO] Building demo-web 0.0.1-SNAPSHOT                                   [3/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ demo-web ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to F:\respository\MultiModulesApp\demo-web\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory F:\respository\MultiModulesApp\demo-web\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ demo-web ---
[INFO] Changes detected - recompiling the module!
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ demo-web ---
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ demo-web ---
[INFO] Building jar: F:\respository\MultiModulesApp\demo-web\target\demo-web-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.3.7.RELEASE:repackage (repackage) @ demo-web ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ demo-web ---
[INFO] Installing F:\respository\MultiModulesApp\demo-web\target\demo-web-0.0.1-SNAPSHOT.jar to E:\respository\com\example\demo-web\0.0.1-SNAPSHOT\demo-web-0.0.1-SNAPSHOT.jar
[INFO] Installing F:\respository\MultiModulesApp\demo-web\pom.xml to E:\respository\com\example\demo-web\0.0.1-SNAPSHOT\demo-web-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for demo 0.0.1-SNAPSHOT:
[INFO] 
[INFO] demo ............................................... SUCCESS [  1.084 s]
[INFO] demo-common ........................................ SUCCESS [  1.587 s]
[INFO] demo-web ........................................... SUCCESS [  1.289 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.299 s
[INFO] Finished at: 2021-10-20T14:33:44+08:00
[INFO] ------------------------------------------------------------------------

3.2 还可以叠罗汉一样构建多模块项目

1666246154567.jpg


一般情况下,深度为3的应用已经相当复杂了。如Thingsboard源码就属于三层Maven多模块结构。


相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
52 4
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
108 62
|
14天前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
30 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
11天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
44 5
|
14天前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
22 1
|
1月前
|
Java
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
40 2
|
2月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
142 1
Maven——创建 Spring Boot项目
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
64 2
|
2月前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
180 6
|
2月前
|
文字识别 安全 Java
SpringBoot3.x和OCR构建车牌识别系统
本文介绍了一个基于Java SpringBoot3.x框架的车牌识别系统,详细阐述了系统的设计目标、需求分析及其实现过程。利用Tesseract OCR库和OpenCV库,实现了车牌图片的识别与处理,确保系统的高准确性和稳定性。文中还提供了具体的代码示例,展示了如何构建和优化车牌识别服务,以及如何处理特殊和异常车牌。通过实际应用案例,帮助读者理解和应用这一解决方案。