一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - maven工程中jar包瘦身的五種方法

maven工程中jar包瘦身的五種方法

2021-08-04 11:01濤聲依舊(競濤) Java教程

這篇文章主要介紹了maven工程中jar包瘦身的五種方法,幫助大家更好的理解和使用maven,感興趣的朋友可以了解下

java項目中常用maven工具來進行工程管理,但經(jīng)常遇到的一個問題是生成的jar包越來越大,編譯一次工程越來越慢。怎么有效地去除冗余依賴,給jar包進行瘦身,是一項必備技能。下面介紹在maven工程中jar包瘦身五大法:

一、將環(huán)境中已包含的依賴包的scope設(shè)置為provided

pom中依賴的部分包可能在你程序運行環(huán)境中已經(jīng)包含,此時應(yīng)該將依賴包的scope設(shè)置為provided。如protobuf包如在環(huán)境中已包含,則應(yīng)設(shè)置為:

?
1
2
3
4
5
6
<dependency>
  <groupId>com.google.protobuf</groupId>
  <artifactId>protobuf-java</artifactId>
  <version>${protobuf.version}</version>
  <scope>provided</scope>
</dependency>

二、刪除未使用依賴

在pom文件配置時可能加入的某些依賴包并沒有真正被使用到,那么有沒有一種有效的方式找到?jīng)]有被使用到的依賴包呢?答案是Apache Maven Dependency Plugin

安裝Apache Maven Dependency Plugin插件并運行mvn dependency:analyze命令來分析項目的依賴關(guān)系,并確定哪些依賴是:使用且聲明的、使用且未聲明的和未使用且聲明的。將未使用且聲明的的依賴從pom文件中去除即可。

如果你使用的是Spring Boot,可以直接添加這個插件

?
1
2
3
4
5
6
7
8
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
  </plugins>
</build>

三、去除重復(fù)依賴

在pom文件中有些依賴可能在<dependencies/><dependencyManagement/>中被重復(fù)配置,或者父子項目配置中可能同一個依賴包被重復(fù)配置??赏ㄟ^Apache Maven Dependency Plugin插件并運行mvn dependency:analyze-duplicate命令來檢查項目的重復(fù)依賴,然后刪除重復(fù)依賴項即可。

四、解決依賴沖突

項目中不同的依賴包可以同時依賴另一個包,而這個嵌套依賴的包可能版本不一致,這可能導(dǎo)致程序無法正常運行,或者運行過程中產(chǎn)生一些很詭異的問題。

那如何方便地找到所有的依賴沖突項并解決呢?在intellij中安裝maven helper插件可快速找出有沖突的包。

安裝完maven helper后,然后打開pom文件,并從Text模式切換到Dependency Analyzer模式,選中Conflicts按鈕,可清晰地看到有沖突依賴包都被標紅顯示出來了。

選中紅色嵌套包并右鍵選擇Exclue即可,實際的效果是在pom文件中對應(yīng)的dependency下將嵌套包exclusion出去了。

?
1
2
3
4
5
6
7
8
9
10
11
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>${hibernate.manager}</version>
  <exclusions>
    <exclusion>
      <artifactId>jboss-logging</artifactId>
      <groupId>org.jboss.logging</groupId>
    </exclusion>
  </exclusions>
</dependency>

某些場景下exclusion沖突的不同版本的依賴包會導(dǎo)致程序無法執(zhí)行,可能的原因是該依賴包無法在其嵌套包的其他版本下正常運行。此時可能需要嘗試找一個新版本的依賴包使其依賴的嵌套包能與其他依賴包達到兼容。

五、去除指定文件

如果采取了上面幾個步驟后還是無法達到j(luò)ar包有效瘦身的目標,那就只能使用最終大殺器:將不需要的指定文件或者文件夾從最終的jar包中移除。

之所以有不需要的文件被打到j(luò)ar包,一方面可能工程中包含了一些非代碼的工程文件,如項目文檔等;另一方面可能你依賴的jar包中包含了不需要的冗余文件。

使用maven-shade-plugin插件可將匹配特定條件的文件從jar包中移除。如下所示,配置exclude項可從最終的jar包中去除匹配特定條件的文件或文件夾(可以是配置文件,也可以是代碼文件)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>2.4.3</version>
  <executions>
    <execution>
      <id>uber-jar</id>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <finalName>${project.artifactId}-${project.version}-jar-with-dependencies</finalName>
        <filters>
          <filter>
            <artifact>*:* </artifact>
            <excludes>
              <exclude>LICENSE</exclude>
              <exclude>META-INF/*.SF</exclude>
              <exclude>META-INF/*.DSA</exclude>
              <exclude>META-INF/*.RSA</exclude>
            </excludes>
          </filter>
        </filters>
      </configuration>
    </execution>
  </executions>
</plugin>

以上就是maven工程中jar包瘦身的五種方法的詳細內(nèi)容,更多關(guān)于maven工程中jar包瘦身的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://blog.csdn.net/qq_27639777/article/details/89944806

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 深夜网站在线观看 | 国产一区二区在线观看美女 | 国产欧美在线播放 | 欧美日韩精品免费一区二区三区 | 亚洲视频中文字幕 | 王淑兰与铁柱全文免费阅读 | 五月天婷婷亚洲 | 夫承子液by免费阅读 | 加勒比福利 | 日韩成人影视 | 91免费破解版 | 国产精品原创视频 | 1024免费观看完整版在线播放 | 青草悠悠视频在线观看 | 五月天色综合 | 国产成人精品免费视频大全五级 | 狠狠色成人综合网图片区 | 强制高h | 美女靠逼免费网站 | 成年人天堂| 国语自产拍在线观看7m | 国产精品视频1区 | 九九热国产视频 | 色综合亚洲天天综合网站 | 国产亚洲欧美日韩综合综合二区 | www.99精品视频在线播放 | 国产亚洲女在线线精品 | 国产成人一区二区三区影院免费 | 美女的隐私无遮挡撒尿 | 免费看欧美一级特黄a大片一 | 国产喂奶300部 | 福利社在线免费观看 | 草草影院永久在线观看 | 丝袜老师好湿好紧我要进去了 | 精品精品久久宅男的天堂 | 91精品国产91久久久久久 | a级片欧美| 国产在线98福利播放视频免费 | 大奶妈咪女教师 | 暖暖的视频完整视频韩国免费 | 久久婷婷五月综合色丁香花 |