SpringBoot+Maven 多模块项目的构建、运行、打包实战

下面我会详细讲解如何使用SpringBoot和Maven构建多模块项目,包括项目的构建、运行和打包,同时会提供两个实例。

环境准备

在开始构建多模块项目之前,请确保已经安装以下软件:

  • JDK 1.8或以上版本
  • Maven 3.2或以上版本

项目结构

下面是一个简单的多模块项目结构:

.
├── parent
│   ├── pom.xml
│   └── src
│       ├── main
│       └── test
├── module1
│   ├── pom.xml
│   └── src
│       ├── main
│       │   ├── java
│       │   └── resources
│       └── test
└── module2
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   └── resources
        └── test

parent 模块是父模块,而 module1module2 是子模块。

parent 模块中,我们会定义一些公共依赖和插件,同时也会将子模块的依赖引入进来。

在子模块中,我们可以定义一些具体的功能模块,每个子模块都有自己独立的 pom.xml 文件。

父模块的 pom.xml

父模块的 pom.xml 文件中应该包含以下信息:

  • groupId:项目组的唯一标识符
  • artifactId:项目的唯一标识符
  • version:项目的版本号
  • packaging:应该设为 pom
  • modules:包含所有子模块的名称

除此之外,我们还可以在父模块中定义一些公共的依赖和插件,供子模块继承。

示例:

<project>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>module1</module>
        <module>module2</module>
    </modules>
    <dependencies>
        <!-- 公共依赖 -->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
</project>

子模块的 pom.xml

每个子模块都有自己独立的 pom.xml 文件,其中应该包含以下信息:

  • parent:指定父模块的 groupIdartifactIdversion
  • groupId:子模块的唯一标识符,应该与父模块相同
  • artifactId:子模块的唯一标识符
  • version:子模块的版本号
  • packaging:应该根据具体情况设定,默认是 jar
  • dependencies:该子模块所需要的依赖

示例:

<project>
    <!-- 指定父模块 -->
    <parent>
        <groupId>com.example</groupId>
        <artifactId>parent</artifactId>
        <version>1.0.0</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>module1</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <!-- 该模块所需要的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

多模块项目的构建

在多模块项目的根目录下,我们可以使用以下命令构建整个项目:

mvn clean install

这条命令会将整个项目构建并打包成 jar/war 包,并且将这些包安装到本地仓库中。

多模块项目的运行

在多模块项目中,我们需要选择某一个子模块作为入口,然后运行该子模块。在运行指定子模块之前,我们需要先进入该子模块所在的目录。

比如,我们想要运行 module1 子模块,可以使用以下命令:

cd module1
mvn spring-boot:run

这条命令会使用SpringBoot插件启动SpringBoot应用程序,并在控制台输出应用程序的日志。

多模块项目的打包

在多模块项目中,我们可以使用以下命令打包某一个子模块:

cd module1
mvn package

该命令会将 module1 打包成一个 jar 包,并且将该包保存到 target 目录中。

示例1:创建一个简单的 SpringBoot 项目

接下来,我们将创建一个简单的 SpringBoot 项目,用来演示如何使用 Maven 构建多模块项目。

首先,我们需要在 parent 模块中加入 SpringBoot 的依赖:

<dependencies>
    <!-- SpringBoot 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.0</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>

然后,我们在 module1 子模块中添加一个简单的 SpringBoot 应用程序,并引入一些必要的依赖:

<dependencies>
    <!-- SpringBoot Web 应用程序依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

Java 代码如下:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

最后,我们运行以下命令构建整个项目:

mvn clean install

构建成功之后,我们进入 module1 子模块的目录,并运行以下命令:

mvn spring-boot:run

这条命令会启动SpringBoot应用程序,并在控制台中输出应用程序的日志。

示例2:创建一个带有多个子模块的 SpringBoot 项目

接下来,我们将创建一个带有多个子模块的 SpringBoot 项目,用来演示如何构建、运行和打包该项目。

首先,我们在 parent 模块中加入 SpringBoot 的依赖:

<dependencies>
    <!-- SpringBoot 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.0</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>

然后,在 module1 子模块中添加一个简单的 SpringBoot 应用程序,并引入一些必要的依赖:

<dependencies>
    <!-- SpringBoot Web 应用程序依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

Java 代码如下:

@RestController
public class HelloWorldController {
    @GetMapping("/hello")
    public String helloWorld() {
        return "Hello, world!";
    }
}

然后,在 module2 子模块中添加一个简单的测试程序,并引入一些必要的依赖:

<dependencies>
    <!-- JUnit 5 单元测试依赖 -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>
    </dependency>

    <!-- SpringBoot 测试依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Java 代码如下:

public class HelloWorldTest {
    @Test
    public void testHelloWorld() {
        HelloWorldController controller = new HelloWorldController();
        String result = controller.helloWorld();
        assertEquals("Hello, world!", result);
    }
}

最后,在 parentpom.xml 文件中,我们应该按照以下方式指定子模块的路径:

<modules>
    <module>module1</module>
    <module>module2</module>
</modules>

构建整个项目并运行 module1 子模块,可以发现访问 http://localhost:8080/hello 时,返回 Hello, world!

同时,我们也可以运行 module2 子模块中的测试程序:mvn test

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot+Maven 多模块项目的构建、运行、打包实战 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java导出Excel通用方法的实例详解

    Java导出Excel通用方法的实例详解 1. 什么是Java导出Excel通用方法? Java导出Excel通用方法指的是使用Java编写代码来生成Excel文件,是一种常见的数据导出方式。Java导出Excel通用方法主要使用Apache POI库实现,可以生成各种格式的Excel文件。使用Java导出Excel通用方法可以将数据以表格的形式展示,并且可…

    Java 2023年6月2日
    00
  • 深入解析Java的Struts框架中的控制器DispatchAction

    深入解析Java的Struts框架中的控制器DispatchAction DispatchAction的概述 Struts是一个MVC架构的Web框架,其中控制器层由Action实现。DispatchAction是Struts中一个特殊的Action,它根据请求参数的值映射到相应的方法进行处理,相当于一组Action的集合,可以大大简化代码实现。 Dispa…

    Java 2023年5月20日
    00
  • java创建excel示例(jxl使用方法)

    关于“java创建excel示例(jxl使用方法)”的攻略,可以分以下步骤进行讲解: 1. 准备工作 在使用jxl创建Excel文件之前,需要先下载并导入jxl的jar包,可以通过以下方式导入: 将下载的jxl.jar文件拷贝至项目的lib目录下,然后右键点击该文件,选择“Build Path” -> “Add to Build Path”即可将其添加…

    Java 2023年6月15日
    00
  • Springboot入门案例及部署项目的详细过程

    下面我将为你详细讲解“Spring Boot入门案例及部署项目的详细过程”。 Spring Boot入门案例 步骤1:创建Spring Boot项目 首先,在你的开发环境上安装好Java和Maven,并创建一个新的Maven工程。在工程中加入以下依赖: <dependency> <groupId>org.springframework…

    Java 2023年5月15日
    00
  • java多线程CountDownLatch与线程池ThreadPoolExecutor/ExecutorService案例

    让我给您详细讲解一下关于Java多线程中CountDownLatch与线程池ThreadPoolExecutor/ExecutorService的用法及案例的完整攻略。这里会分为以下几个部分: 什么是CountDownLatch以及用途 CountDownLatch的用法示例 什么是线程池ThreadPoolExecutor/ExecutorService以…

    Java 2023年5月19日
    00
  • JAVA序列化和反序列化的底层实现原理解析

    JAVA序列化和反序列化的底层实现原理解析 序列化与反序列化的概念 序列化 序列化是指将对象转换成可传输的格式(例如字节码),并且可以在将来重新创建出与原对象完全相同的副本。序列化操作可以在网络上传输对象,或者将对象存储到本地磁盘上。 反序列化 反序列化是指将序列化后的数据流还原为原来的对象的操作。也就是说,反序列化能够重新创建出一个和已序列化的对象完全相同…

    Java 2023年5月19日
    00
  • java检查数组是否有重复元素的方法

    当我们需要在 Java 中检测一个数组是否包含重复的元素时,有多种方法可以实现。本文将介绍一些常用的方法,包括暴力破解、利用 Set 和利用 Arrays 类的 sort() 方法等。下面将一一讲解这些方法的步骤。 1、暴力破解 暴力破解的思路非常简单:遍历整个数组,检查每一个元素是否和后面的元素重复。如果发现重复的元素,则返回 true。否则,该数组中就不…

    Java 2023年5月26日
    00
  • Java基于正则实现的日期校验功能示例

    下面我给出一份详细的Java基于正则实现的日期校验功能示例的攻略。 1. 确定校验的日期格式 在进行日期校验前,需要先确定待校验的日期格式。例如,我们可以使用yyyy-MM-dd作为日期的格式,它表示年份、月份、日期之间以“-”符号隔开。 2. 正则表达式的构建 构建日期校验的正则表达式时,需要考虑以下几点: 年份必须为4位数字,可以使用\d{4}表示。 月…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部