減小Maven項(xiàng)目生成的JAR包體積實(shí)現(xiàn)提升運(yùn)維效率
在使用 Maven 構(gòu)建 Java 項(xiàng)目時,有時需要減小生成的 JAR 包的體積,以提高部署效率或減少資源消耗。
以下是一些有效的方法來減小 JAR 包的體積:
- 排除不必要的依賴
- 打包時,依賴jar包獨(dú)立于應(yīng)用jar包
1. 排除不必要的依賴
通過排除項(xiàng)目中不需要的依賴,可以顯著減小 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> <!-- 其他依賴項(xiàng) --> </dependencies>
2. 依賴jar包獨(dú)立于應(yīng)用jar包
一般來講依賴不會經(jīng)常變化,所以將 依賴 打包到應(yīng)用外是個好主意,可以有效的減小應(yīng)用包。
pom.xml 配置如下:
<!-- 打包時 依賴獨(dú)立于項(xiàng)目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)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用SpringBoot + Redis + Vue實(shí)現(xiàn)動態(tài)路由加載頁面的示例代
在現(xiàn)代 Web 應(yīng)用開發(fā)中,動態(tài)路由加載能夠顯著提升應(yīng)用的靈活性和安全性,本文將深入探討如何利用 Spring Boot、Redis、Element UI 和 Vue 技術(shù)棧實(shí)現(xiàn)動態(tài)路由加載,并通過 Redis 生成和驗(yàn)證有效鏈接以實(shí)現(xiàn)頁面訪問控制,需要的朋友可以參考下2024-09-09Java實(shí)現(xiàn)XML與JSON的互相轉(zhuǎn)換詳解
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)XML與JSON的互相轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理
這篇文章主要介紹了Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02Spring Cloud 部署時使用 Kubernetes 作為注冊中心和配置中
Spring Cloud Kubernetes提供了使用Kubernete本地服務(wù)的Spring Cloud通用接口實(shí)現(xiàn),這篇文章主要介紹了Spring Cloud 部署時如何使用 Kubernetes 作為注冊中心和配置中心,需要的朋友可以參考下2024-05-05關(guān)于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題
這篇文章主要介紹了關(guān)于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題,默認(rèn)的編碼和數(shù)據(jù)庫表中的數(shù)據(jù)使用的編碼是不一致的,如果是中文,那么在數(shù)據(jù)庫中執(zhí)行時已經(jīng)是亂碼了,需要的朋友可以參考下2023-04-04Java獲取本機(jī)IP地址的方法代碼示例(內(nèi)網(wǎng)、公網(wǎng))
在IT領(lǐng)域獲取本機(jī)IP地址是一項(xiàng)基礎(chǔ)但重要的任務(wù),特別是在網(wǎng)絡(luò)編程、遠(yuǎn)程協(xié)作和設(shè)備通信中,這篇文章主要給大家介紹了關(guān)于Java獲取本機(jī)IP地址的方法(內(nèi)網(wǎng)、公網(wǎng)),需要的朋友可以參考下2024-07-07