1. 概述
本快速教程將演示如何使用 Spring Boot 創建一個多模塊項目。
首先,我們將構建一個既不是應用程序本身的庫 JAR 包,然後我們將構建一個使用我們庫的應用程序。
有關 Spring Boot 的介紹,請參閲這篇文章。
2. 設置
要設置我們的多模塊項目,我們首先需要創建一個簡單的模塊,使用POM打包來聚合我們的庫和應用程序模塊,並在我們的 Maven 配置中完成:
<groupId>com.baeldung</groupId>
<artifactId>parent-multi-module</artifactId>
<packaging>pom</packaging>我們將在我們的項目中創建兩個目錄,將應用程序模塊與庫 jar模塊分隔開來。
讓我們在 pom.xml中聲明我們的模塊:
<modules>
<module>library</module>
<module>application</module>
</modules>3. 庫 JAR
對於我們的 庫模塊,我們將使用 JAR打包:
<groupId>com.baledung.example</groupId>
<artifactId>library</artifactId>
<packaging>jar</packaging>為了充分利用 Spring Boot 的依賴管理功能,我們將使用 spring-boot-starter-parent 作為父項目,並確保 設置 <relativePath/> 為空值,以便 Maven 從倉庫中解析父項目的 pom.xml。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.5</version>
<relativePath/>
</parent>請注意,如果我們的項目中已經存在父項目,我們可以將依賴管理作為物料清單 (BOM) 導入,在 <dependencyManagement/> 章節的 pom.xml 中:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>3.1.5</version>
<scope>import</scope>
</dependency>
</dependencies>
<dependencyManagement>最後,初始依賴將會相當簡單:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>在本項目中,Spring Boot插件是不必要的,因為它的主要功能是創建可執行的über-jar,而我們並不需要或想要將其用於庫中。
之後,我們就可以開始開發一個服務組件,該組件將由該庫提供:
@Service
public class EvenOddService {
public String isEvenOrOdd(Integer number) {
return number % 2 == 0 ? "Even" : "Odd";
}
}4. 應用項目
與我們的 庫模塊一樣,我們的應用程序模塊也將使用 JAR打包:
<groupId>com.baeldung.example</groupId>
<artifactId>application</artifactId>
<packaging>jar</packaging>我們將會繼續利用 Spring Boot 的依賴管理功能:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.5</version>
<relativePath/>
</parent>除了 Spring Boot starter 依賴項,我們還將包含之前章節中創建的我們的庫的 jar 包:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baeldung.example</groupId>
<artifactId>library</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
最後,我們將使用 Spring Boot插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>使用上述插件在這裏有幾個方便的原因。
首先,它提供了一個內置的依賴關係解析器,將版本號設置為與 Spring Boot 依賴項匹配。
其次,它會搜索主方法,將其標記為可運行的類。
最後,也許最重要的是,它會收集所有在 classpath 上的 jars,並構建一個單一的、可運行的 über-jar。
現在一切都準備好了,我們可以編寫應用程序類並直接進入主題,讓我們 在主應用程序類中實現一個控制器:
@SpringBootApplication(scanBasePackages = "com.baeldung")
@RestController
public class EvenOddApplication {
private EvenOddService evenOddService;
// constructor
@GetMapping("/validate/")
public String isEvenOrOdd(
@RequestParam("number") Integer number) {
return evenOddService.isEvenOrOdd(number);
}
public static void main(String[] args) {
SpringApplication.run(EvenOddApplication.class, args);
}
}5. 結論
本文介紹瞭如何實施和配置多模塊項目,並使用 Spring Boot 構建獨立的庫文件 JAR 包。