2017-02-27 298 views
0

我包含一個49MB大小的庫。但是,我只使用了一些功能,並且我不希望整個庫存在於最終的jar中。我使用了proguard。但是,我並未成功縮小規模。如何減少jar大小

任何人都可以讓我知道正確的工具,可以智能地刪除未使用的類/罐子。

+0

爲什麼你不在乎它有多大?考慮使用maven-shade-plugin,它具有此功能。 – bmargulies

回答

0

Java SE 5和6已經有一個名爲「pack200」的打包工具。該工具能夠壓縮已經存在的jar文件,然後用於網絡分發。我壓縮使用以下命令的rt.jar中:

C:\程序\的Java \ jdk1.6.0 \ JRE \ lib文件> pack200 -J-Xmx256m rt.jar.gz的rt.jar

的標誌 - JX ..是必要的,因爲可能會出現內存溢出,否則異常(pack200是用Java編寫...) 結果是驚人的:

產地大小:43.8 MB 壓縮後的大小:5.81 MB

對於拆包可以使用工具「unpack200」。

對於WebStart應用程序的分發,工具包200特別有趣,可以實現更快的下載時間。已經有另一個衆所周知的樣品 - 玻璃魚。在第二個安裝階段,GlassFish的解壓使用unpack200工具內部的圖書館...

字體:http://www.adam-bien.com/roller/abien/entry/how_to_reduce_the_jar

0

如果你有一個Maven項目,你可以使用maven-shade-plugin,有一個名爲minimizeJar配置。

可以由package階段應用程序的maven-shade-pluginminimizeJar配置選項綁定:

<project> 
    ... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>3.0.0</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
         <minimizeJar>true</minimizeJar> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    ... 
</project> 

參考:Selecting contents for Uber jar