Spring Boot 中默认打包成的 jar 叫做可执行 jar
,这种jar包可以通过可以通过命令(java -jar xxx.jar)来运行的,但这种jar包不能被其他项目所依赖,因为它和普通 jar 的结构不同,即使被依赖了也不能直接使用其中的类。
普通的jar包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOT-INF\classes 目录下才是我们的代码,因此无法被直接引用。如果非要引用
,可以在 pom.xml 文件中增加配置,将 Spring Boot 项目打包成两个 jar ,一个可执行,一个可引用。
如何让SpringBoot打的jar包可依赖?
在pom文件中增加以下配置:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><!--可以把依赖的包都打包到生成的Jar包中 --><goal>repackage</goal></goals><!--可以生成不含依赖包的不可执行Jar包 --><configuration><classifier>exec</classifier></configuration></execution></executions></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build>
- 如下图,一次性打包生成两个jar,其中XXX.jar可被其它工程依赖,XXX-exec.jar可执行。