減小Maven項目生成的JAR包體積實現(xiàn)提升運維效率
在使用 Maven 構建 Java 項目時,有時需要減小生成的 JAR 包的體積,以提高部署效率或減少資源消耗。
以下是一些有效的方法來減小 JAR 包的體積:
- 排除不必要的依賴
- 打包時,依賴jar包獨立于應用jar包
1. 排除不必要的依賴
通過排除項目中不需要的依賴,可以顯著減小 JAR 包的體積。
在 pom.xml 中,可以在 標簽中使用 標簽來排除特定的依賴。
<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包獨立于應用jar包
一般來講依賴不會經(jī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>
注意:
- 第一部署應用 或者依賴有更新時
- 需要把依賴(lib)也上傳到服務
效果如下:
├── target │ ├── classes │ ├── generated-sources │ ├── lib │ ├── maven-archiver │ ├── maven-status │ └── web-0.0.1-SNAPSHOT.jar
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用SpringBoot + Redis + Vue實現(xiàn)動態(tài)路由加載頁面的示例代
在現(xiàn)代 Web 應用開發(fā)中,動態(tài)路由加載能夠顯著提升應用的靈活性和安全性,本文將深入探討如何利用 Spring Boot、Redis、Element UI 和 Vue 技術棧實現(xiàn)動態(tài)路由加載,并通過 Redis 生成和驗證有效鏈接以實現(xiàn)頁面訪問控制,需要的朋友可以參考下2024-09-09Java 利用枚舉實現(xiàn)接口進行統(tǒng)一管理
這篇文章主要介紹了Java 利用枚舉實現(xiàn)接口進行統(tǒng)一管理,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02Spring Cloud 部署時使用 Kubernetes 作為注冊中心和配置中
Spring Cloud Kubernetes提供了使用Kubernete本地服務的Spring Cloud通用接口實現(xiàn),這篇文章主要介紹了Spring Cloud 部署時如何使用 Kubernetes 作為注冊中心和配置中心,需要的朋友可以參考下2024-05-05關于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題
這篇文章主要介紹了關于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題,默認的編碼和數(shù)據(jù)庫表中的數(shù)據(jù)使用的編碼是不一致的,如果是中文,那么在數(shù)據(jù)庫中執(zhí)行時已經(jīng)是亂碼了,需要的朋友可以參考下2023-04-04Java獲取本機IP地址的方法代碼示例(內(nèi)網(wǎng)、公網(wǎng))
在IT領域獲取本機IP地址是一項基礎但重要的任務,特別是在網(wǎng)絡編程、遠程協(xié)作和設備通信中,這篇文章主要給大家介紹了關于Java獲取本機IP地址的方法(內(nèi)網(wǎng)、公網(wǎng)),需要的朋友可以參考下2024-07-07