最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年02月05日 14:51:40   作者:濤聲依舊(競(jìng)濤)  
這篇文章主要介紹了maven工程中jar包瘦身的五種方法,幫助大家更好的理解和使用maven,感興趣的朋友可以了解下

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

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

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

<dependency>
  <groupId>com.google.protobuf</groupId>
  <artifactId>protobuf-java</artifactId>
  <version>${protobuf.version}</version>
  <scope>provided</scope>
</dependency>

二、刪除未使用依賴

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

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

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

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
  </plugins>
</build>

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

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

四、解決依賴沖突

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

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

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

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

<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>

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

五、去除指定文件

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

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

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

<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包瘦身的五種方法的詳細(xì)內(nèi)容,更多關(guān)于maven工程中jar包瘦身的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 談?wù)凧ava中try-catch-finally中的return語(yǔ)句

    談?wù)凧ava中try-catch-finally中的return語(yǔ)句

    我們知道return語(yǔ)句用在某一個(gè)方法中,一是用于返回函數(shù)的執(zhí)行結(jié)果,二是用于返回值為void類(lèi)型的函數(shù)中,僅僅是一個(gè)return語(yǔ)句(return ;),此時(shí)用于結(jié)束方法的執(zhí)行,也即此return后的語(yǔ)句將不會(huì)被執(zhí)行,當(dāng)然,這種情況下return語(yǔ)句后不能再有其它的語(yǔ)句了
    2016-01-01
  • java.lang.Void類(lèi)的解析與使用詳解

    java.lang.Void類(lèi)的解析與使用詳解

    這篇文章主要介紹了java.lang.Void類(lèi)的解析與使用詳解,文中涉及到了java.lang.integer類(lèi)的源碼,分場(chǎng)景給大家介紹的非常詳細(xì),給大家補(bǔ)充介紹java.lang.Void 與 void的比較及使用,需要的朋友可以參考下
    2017-12-12
  • SpringMVC響應(yīng)視圖和結(jié)果視圖詳解

    SpringMVC響應(yīng)視圖和結(jié)果視圖詳解

    這篇文章主要介紹了SpringMVC響應(yīng)視圖和結(jié)果視圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • JavaMe開(kāi)發(fā)自適應(yīng)滾動(dòng)顯示

    JavaMe開(kāi)發(fā)自適應(yīng)滾動(dòng)顯示

    我們??吹揭恍L動(dòng)顯示的實(shí)例,比如UC瀏覽器中,顯示網(wǎng)頁(yè)的內(nèi)容。當(dāng)內(nèi)容比較多時(shí),采用滾動(dòng)分頁(yè)顯示是合理的。在Canvas中繪圖中,多余的內(nèi)容被截?cái)嗔?。如何?shí)現(xiàn)滾動(dòng)分頁(yè)顯示呢?
    2015-09-09
  • JAVA生成xml文件簡(jiǎn)單示例

    JAVA生成xml文件簡(jiǎn)單示例

    這篇文章主要介紹了JAVA生成xml文件的相關(guān)資料,在Java中可以使用DOM或者JDOM來(lái)生成XML文件,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 解讀java.lang.Character.isLetterOrDigit()的使用方式

    解讀java.lang.Character.isLetterOrDigit()的使用方式

    這篇文章主要介紹了解讀java.lang.Character.isLetterOrDigit()的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • springboot?serviceImpl初始化注入對(duì)象實(shí)現(xiàn)方式

    springboot?serviceImpl初始化注入對(duì)象實(shí)現(xiàn)方式

    這篇文章主要介紹了springboot?serviceImpl初始化注入對(duì)象實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • SpringSecurity登錄使用JSON格式數(shù)據(jù)的方法

    SpringSecurity登錄使用JSON格式數(shù)據(jù)的方法

    這篇文章主要介紹了SpringSecurity登錄使用JSON格式數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Java實(shí)現(xiàn)調(diào)用對(duì)方http接口得到返回?cái)?shù)據(jù)

    Java實(shí)現(xiàn)調(diào)用對(duì)方http接口得到返回?cái)?shù)據(jù)

    這篇文章主要介紹了Java實(shí)現(xiàn)調(diào)用對(duì)方http接口得到返回?cái)?shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot用JdbcTemplates訪問(wèn)Mysql實(shí)例代碼

    SpringBoot用JdbcTemplates訪問(wèn)Mysql實(shí)例代碼

    本篇文章主要介紹了SpringBoot用JdbcTemplates訪問(wèn)Mysql實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05

最新評(píng)論

泸溪县| 常山县| 阳谷县| 平武县| 阜新市| 莎车县| 抚州市| 崇文区| 禄劝| 苗栗市| 丰顺县| 延边| 武城县| 奉新县| 仲巴县| 兖州市| 怀远县| 永善县| 和静县| 堆龙德庆县| 吕梁市| 天峨县| 广汉市| 金昌市| 陵川县| 江安县| 那曲县| 中山市| 广平县| 双辽市| 都匀市| 黄平县| 承德市| 富民县| 石台县| 迁西县| 枣阳市| 宁晋县| 龙泉市| 专栏| 淮安市|