springboot項目打包瘦身
- 2020 年 10 月 3 日
- 筆記
- springboot2.x基礎教程
默認情況下,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上面下載源碼。