Spring Boot 打成的 jar 和普通的 jar 有什么區別 ?
Spring Boot 打成的 jar
- Spring Boot的項目終止以jar包的形式進行打包,這種jar包可以通過可以通過命令(java -jar xxx.jar)來運行的,這種jar包不能被其他項目所依賴,即使被依賴了也不能直接使用其中的類。普通的jar包,解壓后直接就是包名,包里就是我們的代碼,而 Spring Boot 打包成的可執行 jar 解壓后,在 \BOOT-INF\classes 目錄下才是我們的代碼,因此無法被直接引用。如果非要引用,可以在 pom.xml 文件中增加配置,將 Spring Boot 項目打包成兩個 jar ,一個可執行,一個可引用。
下面是不同jar包的目錄結構 - Spring boot 的jar包
- 普通的jar包
Spring Boot 打可依賴的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可被執行
- 我們看一下目錄結構 是否是我們所希望的。
可執行的jar
可依賴的jar包
備注
- 查看jar的結構工具,可參看 http://java-decompiler.github.io/
結束
- 相信小伙伴對Spring Boot jar 和普通的jar有一定的了解,希望本文可以幫助到你