spring boot打jar包分离lib后,配置文件的方式,在网上可以搜到很多答案,但是都不够完善,今天小编给大家带来了Spring boot 打jar包分离lib的正确配置方式,感兴趣的朋友一起看看吧
在Spring Boot项目中,将依赖库(lib)分离到单独的目录是常见的需求,尤其是在生产环境中,便于管理和优化资源。本文将详细介绍如何正确配置Spring Boot项目以实现jar包与lib的分离。
我们需要理解Spring Boot默认的打包机制。Spring Boot使用Maven或Gradle作为构建工具,它会将所有依赖项打包进一个可执行的jar文件中,这种jar被称为“fat jar”。然而,为了更好地管理依赖,我们可能希望将这些依赖单独打包到lib目录下。
在Maven项目中,我们可以使用`maven-dependency-plugin`插件来完成这个任务。以下是一个配置示例:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version> <!-- 确保使用最新版本 -->
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory> <!-- 设置输出目录为target/lib -->
<excludeTransitive>true</excludeTransitive> <!-- 可选,排除传递性依赖,只保留直接依赖 -->
<stripVersion>true</stripVersion> <!-- 可选,去除jar文件中的版本号 -->
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.3</version> <!-- 使用与项目对应的Spring Boot版本 -->
<configuration>
<layout>JAR</layout>
<finalName>your-app-name</finalName> <!-- 可选,设置最终jar文件名 -->
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix> <!-- 设置类路径前缀为lib/ -->
</manifest>
</archive>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal> <!-- 重新打包应用,生成可执行jar -->
</goals>
<configuration>
<attach>false</attach> <!-- 防止生成额外的非可执行jar -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
```
这段配置中,`maven-dependency-plugin`用于复制依赖到`target/lib`目录,而`spring-boot-maven-plugin`则用于生成可执行jar,并在MANIFEST.MF文件中指定类路径前缀为`lib/`,这样Spring Boot在运行时会知道去哪里寻找依赖。
部署这个项目时,需要将`target/your-app-name.jar`和`target/lib`目录一起打包,然后通过以下命令运行:
```bash
java -cp "target/your-app-name.jar:target/lib/*" org.springframework.boot.loader.JarLauncher
```
或者,如果你使用的是`spring-boot-maven-plugin`生成的可执行jar,可以直接运行:
```bash
java -jar target/your-app-name.jar
```
需要注意的是,这个配置适用于Windows和Linux环境,不同操作系统可能会有路径分隔符的区别,例如Windows使用`;`而Linux使用`:`。此外,确保你的JDK版本与Spring Boot支持的版本相匹配。
总结起来,Spring Boot项目打jar包分离lib的关键在于正确配置`maven-dependency-plugin`和`spring-boot-maven-plugin`,将依赖库复制到指定目录,并在MANIFEST.MF文件中设置类路径前缀,以便在运行时加载这些依赖。这样的配置可以帮助你更好地管理和维护你的Spring Boot应用程序。