使用Spring Boot应用程序作为依赖项

2023/05/11

1. 概述

在本教程中,我们介绍如何将Spring Boot应用程序用作另一个项目的依赖项。

2. Spring Boot打包

Spring Boot Maven和Gradle插件都将我们的应用程序打包为可执行JAR-这样的文件不能在另一个项目中使用,因为类文件被放入BOOT-INF/classes中。这不是错误,而是一个功能。

为了与另一个项目共享类,最好的方法是创建一个包含共享类的单独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 Plugin打包

我们也可以使用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>

如果我们将此插件与spring-boot-maven-plugin中的exec分类器一起使用,它将生成三个jar。前两个与我们之前看到的相同,第三个将具有我们在<descriptorRef>标签中指定的任何后缀,并将包含项目的所有传递依赖项。如果我们将它包含在另一个项目中,我们将不需要单独包含Spring依赖项。

4. 总结

在本文中,我们演示了几种打包Spring Boot应用程序以用作其他Maven项目的依赖项的方法。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章