基于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多模块结构。


相关文章
|
6天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
22 4
|
8天前
|
Java API 数据库
如何使用Spring Boot构建RESTful API,以在线图书管理系统为例
【10月更文挑战第9天】本文介绍了如何使用Spring Boot构建RESTful API,以在线图书管理系统为例,从项目搭建、实体类定义、数据访问层创建、业务逻辑处理到RESTful API的实现,详细展示了每个步骤。通过Spring Boot的简洁配置和强大功能,开发者可以高效地开发出功能完备、易于维护的Web应用。
31 3
|
6天前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
31 1
Maven——创建 Spring Boot项目
|
9天前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
13 1
如何使用 maven 创建一个 Spring Boot项目
|
9天前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
178 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
5天前
|
文字识别 安全 Java
SpringBoot3.x和OCR构建车牌识别系统
本文介绍了一个基于Java SpringBoot3.x框架的车牌识别系统,详细阐述了系统的设计目标、需求分析及其实现过程。利用Tesseract OCR库和OpenCV库,实现了车牌图片的识别与处理,确保系统的高准确性和稳定性。文中还提供了具体的代码示例,展示了如何构建和优化车牌识别服务,以及如何处理特殊和异常车牌。通过实际应用案例,帮助读者理解和应用这一解决方案。
|
9天前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
44 0
|
8天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
62 1
|
1月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
100 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
1月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
140 1

推荐镜像

更多