減小Maven項目生成的JAR包體積實現(xiàn)提升運維效率
在使用 Maven 構(gòu)建 Java 項目時,有時需要減小生成的 JAR 包的體積,以提高部署效率或減少資源消耗。
以下是一些有效的方法來減小 JAR 包的體積:
- 排除不必要的依賴
- 打包時,依賴jar包獨立于應(yīng)用jar包
1. 排除不必要的依賴
通過排除項目中不需要的依賴,可以顯著減小 JAR 包的體積。
在 pom.xml 中,可以在 標(biāo)簽中使用 標(biāo)簽來排除特定的依賴。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.4</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 其他依賴項 -->
</dependencies>
2. 依賴jar包獨立于應(yīng)用jar包
一般來講依賴不會經(jīng)常變化,所以將 依賴 打包到應(yīng)用外是個好主意,可以有效的減小應(yīng)用包。
pom.xml 配置如下:
<!-- 打包時 依賴獨立于項目jar包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.github.nan.web.NanWebApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>注意:
- 第一部署應(yīng)用 或者依賴有更新時
- 需要把依賴(lib)也上傳到服務(wù)
效果如下:
├── target │ ├── classes │ ├── generated-sources │ ├── lib │ ├── maven-archiver │ ├── maven-status │ └── web-0.0.1-SNAPSHOT.jar
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springBoot 過濾器去除請求參數(shù)前后空格實例詳解
這篇文章主要為大家介紹了springBoot 過濾器去除請求參數(shù)前后空格實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Swing圖形界面實現(xiàn)可動態(tài)刷新的驗證碼
這篇文章主要為大家詳細(xì)介紹了Swing圖形界面實現(xiàn)可動態(tài)刷新的驗證碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
java中調(diào)用GDAL DLL的實現(xiàn)方法
本篇文章是對java中調(diào)用GDAL DLL的實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
深入講解java線程與synchronized關(guān)鍵字
Java 中多線程的同步依靠的是對象鎖機制,synchronized關(guān)鍵字就是利用了封裝對象鎖來實現(xiàn)對共享資源的互斥訪問。下面這篇文章主要介紹了java線程與synchronized關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下。2017-03-03
剖析Java中在Collection集合中使用contains和remove為什么要重寫equals
這篇文章主要介紹了Collection集合的contains和remove方法詳解remove以及相關(guān)的經(jīng)驗技巧,通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
mybatis?返回Map類型key默認(rèn)為大寫問題
這篇文章主要介紹了mybatis?返回Map類型key默認(rèn)為大寫問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot使用Spring AI集成本地Ollama實現(xiàn)AI快速對話的完整示例
在實際開發(fā)中,我們經(jīng)常需要在本地運行大模型進(jìn)行測試和開發(fā),雖然阿里云百煉等云平臺提供了便捷的API服務(wù),但在一些場景中,本地Ollama是更好的選擇,因此本文給大家詳細(xì)介紹了SpringBoot使用Spring AI集成本地Ollama實現(xiàn)AI快速對話的完整示例,需要的朋友可以參考下2026-06-06

