Spring Boot 2.x Maven 多模块 打包 多模块配置文件位置

落日余晖 2024-07-03 ⋅ 19 阅读

介绍

在开发 Spring Boot 项目时,使用 Maven 多模块结构可以更好地组织代码。本文将介绍如何使用 Spring Boot 2.x 和 Maven 的多模块功能来实现项目的打包,并说明多模块配置文件的位置。

前提条件

在开始之前,需要确保你的开发环境中已经安装了以下工具:

  • JDK 1.8 及以上版本
  • Maven 3.x

创建多模块项目

首先,我们需要创建一个 Maven 多模块项目。可以通过以下命令来创建一个新的 Maven 项目:

mvn archetype:generate -DgroupId=com.example -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

接着,在 myproject 目录下创建一个 pom.xml 文件,并添加以下内容:

<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
    <module>myproject-core</module>
    <module>myproject-web</module>
</modules>

这将创建一个名为 myproject 的主模块,并在 modules 标签中添加了两个子模块:myproject-coremyproject-web。你可以根据项目的需求添加更多的子模块。

接下来,我们将在 myproject 目录下创建 myproject-coremyproject-web 两个子模块,分别用于存放核心代码和 Web 相关代码。进入 myproject 目录,执行以下命令:

mkdir myproject-core
mkdir myproject-web

分别进入两个子模块目录,并在每个目录下创建一个 pom.xml 文件。在 myproject-corepom.xml 中添加以下内容:

<groupId>com.example</groupId>
<artifactId>myproject-core</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

myproject-webpom.xml 中添加以下内容:

<groupId>com.example</groupId>
<artifactId>myproject-web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>

这里需要注意的是,myproject-web 子模块中的 <parent> 标签指定了父模块为 myproject-core,并且通过 <relativePath> 标签指定了父模块的相对路径。

配置 Spring Boot 项目

接下来,我们需要为每个子模块创建一个 Spring Boot 项目。在 myproject-coremyproject-web 目录下分别执行以下命令:

mvn archetype:generate -DgroupId=com.example -DartifactId=myproject-core -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DgroupId=com.example -DartifactId=myproject-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

这将创建了两个基本的 Maven 项目,分别用于存放核心代码和 Web 相关代码。

然后,我们需要添加 Spring Boot 的依赖,以及配置启动类和配置文件等。在 myproject-core 中的 pom.xml 文件中添加以下依赖:

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

src/main/java/com/example/myprojectcore 目录下创建一个名为 MyProjectCoreApplication 的启动类,并添加 @SpringBootApplication 注解。

接着,在 src/main/resources 目录下创建一个名为 application.properties 的配置文件,并添加相关的配置。

同样地,在 myproject-web 中的 pom.xml 文件中添加以下依赖:

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

src/main/java/com/example/myprojectweb 目录下创建一个名为 MyProjectWebApplication 的启动类,并添加 @SpringBootApplication 注解。

src/main/resources 目录下创建一个名为 application.properties 的配置文件,并添加相关的配置。

配置多模块打包

现在,我们可以使用 Maven 的打包功能来构建整个项目。在 myprojectpom.xml 文件中添加以下插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.example.myprojectweb.MyProjectWebApplication</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这将使用 Assembly 插件将项目打包为一个可执行 JAR 文件,并将 com.example.myprojectweb.MyProjectWebApplication 设置为启动类。

接下来,在 myproject-webpom.xml 文件中添加以下插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

这将使用 Spring Boot 插件将项目打包为一个可执行 JAR 文件,并且自动将所有依赖项打包到 JAR 文件中。

配置多模块配置文件位置

默认情况下,Spring Boot 会在 src/main/resources 目录下查找配置文件。如果我们想为多模块项目配置不同的配置文件位置,可以使用 spring.config.namespring.config.location 属性。

myproject-coresrc/main/resources 目录下创建一个名为 application-core.properties 的配置文件,并添加相关的配置。

myproject-websrc/main/resources 目录下创建一个名为 application-web.properties 的配置文件,并添加相关的配置。

分别启动 myproject-coremyproject-web 的 Spring Boot 项目时,可以通过以下方式指定不同的配置文件:

java -jar myproject-core.jar --spring.config.name=application-core
java -jar myproject-web.jar --spring.config.name=application-web

这样,每个子模块都可以使用自己的配置文件。

总结

本文介绍了如何使用 Spring Boot 2.x 和 Maven 多模块功能来组织代码,并说明了多模块配置文件的位置。通过使用 Maven 的打包功能和 Spring Boot 插件,我们可以方便地构建和部署多模块 Spring Boot 项目。

希望本文对你在如何使用 Spring Boot 2.x 和 Maven 多模块进行打包以及多模块配置文件的位置有所帮助。如果有任何疑问或建议,请随时提出。


全部评论: 0

    我有话说: