介绍
在开发 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-core
和 myproject-web
。你可以根据项目的需求添加更多的子模块。
接下来,我们将在 myproject
目录下创建 myproject-core
和 myproject-web
两个子模块,分别用于存放核心代码和 Web 相关代码。进入 myproject
目录,执行以下命令:
mkdir myproject-core
mkdir myproject-web
分别进入两个子模块目录,并在每个目录下创建一个 pom.xml
文件。在 myproject-core
的 pom.xml
中添加以下内容:
<groupId>com.example</groupId>
<artifactId>myproject-core</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
在 myproject-web
的 pom.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-core
和 myproject-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 的打包功能来构建整个项目。在 myproject
的 pom.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-web
的 pom.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.name
和 spring.config.location
属性。
在 myproject-core
的 src/main/resources
目录下创建一个名为 application-core.properties
的配置文件,并添加相关的配置。
在 myproject-web
的 src/main/resources
目录下创建一个名为 application-web.properties
的配置文件,并添加相关的配置。
分别启动 myproject-core
和 myproject-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 多模块进行打包以及多模块配置文件的位置有所帮助。如果有任何疑问或建议,请随时提出。
本文来自极简博客,作者:落日余晖,转载请注明原文链接:Spring Boot 2.x Maven 多模块 打包 多模块配置文件位置