知識庫 / Spring / Spring Boot RSS 訂閱

使用 Spring Boot 應用作為依賴

Spring Boot
HongKong
4
01:20 PM · Dec 06 ,2025

1. 概述

在本教程中,我們將學習如何將 Spring Boot 應用程序作為另一個項目的依賴項使用。

2. Spring Boot 打包

Spring Boot Maven 和 Gradle 插件都將我們的應用程序打包為可執行的 JAR 文件—— 這種文件不能被其他項目使用,因為類文件會被放入 BOOT-INF/classes。 這不是一個 bug,而是一個特性。

為了與另一個項目共享類,最佳方法是創建一個單獨的 JAR 文件,其中包含共享的類,然後將其作為所有依賴這些類的模塊的依賴項。

但是,如果這不可行,我們可以配置插件以生成一個單獨的 JAR 文件,該文件可作為依賴項使用。

2.1. Maven 配置

讓我們使用分類器配置插件:

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

雖然,Spring Boot 1.x 的配置方式會略有不同:

...
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
            <configuration>
                <classifier>exec</classifier>
            </configuration>
        </execution>
    </executions>
</plugin>

這將會創建兩個 JAR 包,一個帶有 exec 後綴的可執行 JAR 包,以及 另一個作為我們可以在其他項目中包含的典型 JAR 包。

3. 使用 Maven Assembly 插件打包

我們可以使用 maven-assembly-plugin 創建依賴 JAR 包:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

如果我們將此插件與 exec 分類器結合使用,並使用 spring-boot-maven-plugin,它將生成三個 JAR 包。前兩個 JAR 包與我們之前看到的相同。

第三個 JAR 包將包含我們在 <descriptorRef> 標籤中指定的任何後綴,並且將包含整個項目的傳遞依賴項。如果在另一個項目中包含它,就不需要單獨包含 Spring 依賴項。

4. 結論

在本文中,我們展示了兩種打包 Spring Boot 應用程序以作為依賴項用於其他 Maven 項目的方法。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.