預設情況下,Spring Boot 專案釋出時會將專案程式碼和專案的所有依賴檔案一起打成一個可執行的 jar 包。但如果專案的依賴包很多,那麼這個檔案就會非常大。這樣每次即使只改動一點東西,就需要將整個專案重新打包部署,我們將依賴 lib 從專案分離出來,這樣每次部署只需要釋出專案原始碼即可。
瘦身打包配置
springboot預設使用spring-boot-maven-plugin 來打包,這個外掛會將專案所有的依賴打入專案jar 包裡面,將打包外掛替換為 maven-jar-plugin,並拷貝依賴到 jar 到外面的 lib 目錄。
<build>
<plugins>
<!-- 指定啟動類,將依賴打成外部jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 生成的jar中,不要包含pom.xml和pom.properties這兩個檔案 -->
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<!-- 是否要把第三方jar加入到類構建路徑 -->
<addClasspath>true</addClasspath>
<!-- 外部依賴jar包的最終位置 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- 專案啟動類 --> <mainClass>vip.codehome.springboot.tutorials.SpringbootTutorialsApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!--拷貝依賴到jar外面的lib目錄-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-lib</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>target/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
專案打包時會在target目錄生成lib依賴包跟專案jar包,部署時將專案 jar 包以及 lib 資料夾上傳到伺服器上,使用java -jar 命令啟動即可。如果後續僅僅修改了專案程式碼,只需上傳替換專案 jar 包。
千里之行,始於足下。這裡是SpringBoot教程系列第十八篇,所有專案原始碼均可以在我的GitHub上面下載原始碼。