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日

相关文章

  • SpringBoot环境搭建图文教程

    下面就来详细讲解一下如何搭建Spring Boot环境。 1. 安装Java JDK 首先需要安装Java JDK,从Oracle官网下载JDK安装包,并按照提示进行安装。安装完成后,可以通过运行以下命令检查是否安装成功: java -version 2. 安装Maven Spring Boot项目通常使用Maven构建,所以需要先安装Maven。从官网下载…

    Java 2023年5月15日
    00
  • MyBatis-Plus简介和快速入门教程

    MyBatis-Plus简介和快速入门教程 简介 MyBatis-Plus是基于MyBatis的增强工具,提供了常用的增删改查、分页、乐观锁、逻辑删除等功能,简化了开发人员的工作,提高了开发效率。同时 MyBatis-Plus 也支持 Lambda 表达式查询、自动代码生成等高级功能。 MyBatis-Plus 的主要特点如下: 支持自动生成代码; 内置通用…

    Java 2023年5月20日
    00
  • java信号量控制线程打印顺序的示例分享

    Java信号量是一种同步原语,用于控制线程并发访问资源的数量。Java信号量的主要作用是保护临界区,以确保在任何时刻只有特定数量的线程可以访问该区域。在这里,我们将分享一个Java信号量控制线程打印顺序的示例,该示例演示如何使用Java信号量来协调多个线程以按特定顺序打印。 1. 示例一 在这个示例中,我们将创建两个线程,一个线程负责打印奇数,另一个线程负责…

    Java 2023年5月26日
    00
  • idea连接SQL Server数据库的详细图文教程

    下面我来详细讲解“idea连接SQL Server数据库的详细图文教程”的攻略。 准备工作 安装idea 下载安装SQL Server JDBC驱动程序,例如Microsoft官方提供的sqljdbc驱动 连接SQL Server 打开idea,选择菜单栏“File” -> “Data Sources” 在新弹出的窗口中,点击右上角的“+”按钮,选择“…

    Java 2023年6月16日
    00
  • JAVA Future类的使用详解

    JAVA Future类的使用详解 什么是Future类? Java中的Future类用于描述一个异步计算的结果,它提供了检查计算是否完成、等待计算完成和获取计算结果的方法。 Future类的使用方法 创建Future对象 可以使用java.util.concurrent.Executors类中的线程池工厂方法创建一个ExecutorService线程池,然…

    Java 2023年5月26日
    00
  • 基于重定向RedirectAttributes的用法解析

    基于重定向 RedirectAttributes 的用法解析 在 Spring MVC 中,经常会使用重定向来实现一些跳转的功能。而 RedirectAttributes 则是在使用重定向时用于向跳转页面传递数据的对象。 RedirectAttributes 的用法 使用 RedirectAttributes 一般需要按以下步骤进行: 在处理请求的方法中通过…

    Java 2023年6月15日
    00
  • Dubbo3的Spring适配原理与初始化流程源码解析

    Dubbo3的Spring适配原理与初始化流程源码解析攻略: 1. 前言 Dubbo3是阿里巴巴开发的一款高性能和轻量级的RPC框架,具有很强的扩展性和灵活性,其底层采用Netty和Java NIO技术实现。Dubbo3提供了与Spring框架无缝集成的能力,本文将深入探究Dubbo3如何与Spring框架集成,并分析Dubbo3的Spring适配原理和初始…

    Java 2023年5月31日
    00
  • Java状态机的一种优雅写法分享

    下面是详细的Java状态机优雅写法攻略: 什么是Java状态机 Java状态机是一种将系统状态和事件之间的转换关系表述出来的方法,常用于开发物联网、自动控制等领域的程序。状态机分为有限状态机和无限状态机两种。在有限状态机中,状态和事件都是有限的,而在无限状态机中,状态和事件是无限的。 Java状态机的一种优雅写法 状态机是一种常见的编程模式,Java中也不例…

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