4

我正在尝试使用 Batik 库源,我只想使用转码器将 SVG 文件仅转换为 PNG 或 JPEG。Batik Rasterizer 的分发版本约为 55k,但当我导出 jar 文件时,它的大小为 7 兆。我可以只使用转码器而不是库中的所有罐子吗?我在 Coldfusion 中加载 jar 文件。只使用发行版会更有意义吗?

4

2 回答 2

3

这是batik-transcoder1.6-1 的依赖树,使用mvn dependency:tree -Dverbose

[INFO] +- batik:batik-transcoder:jar:1.6-1:compile
[INFO] |  +- batik:batik-bridge:jar:1.6-1:compile
[INFO] |  |  +- batik:batik-gvt:jar:1.6-1:compile
[INFO] |  |  |  \- batik:batik-awt-util:jar:1.6-1:compile
[INFO] |  |  |     \- batik:batik-util:jar:1.6-1:compile
[INFO] |  |  |        \- (batik:batik-gui-util:jar:1.6-1:compile - omitted for duplicate)
[INFO] |  |  +- (batik:batik-bridge:jar:1.6-1:compile - omitted for cycle)
[INFO] |  |  +- batik:batik-script:jar:1.6-1:compile
[INFO] |  |  \- batik:batik-svg-dom:jar:1.6-1:compile
[INFO] |  |     +- batik:batik-dom:jar:1.6-1:compile
[INFO] |  |     |  +- batik:batik-css:jar:1.6-1:compile
[INFO] |  |     |  |  \- (batik:batik-util:jar:1.6-1:compile - omitted for duplicate)
[INFO] |  |     |  +- batik:batik-xml:jar:1.6-1:compile
[INFO] |  |     |  |  \- (batik:batik-util:jar:1.6-1:compile - omitted for duplicate)
[INFO] |  |     |  \- (xerces:xercesImpl:jar:2.5.0:compile - omitted for conflict with 2.2.1)
[INFO] |  |     \- batik:batik-parser:jar:1.6-1:compile
[INFO] |  |        \- (batik:batik-awt-util:jar:1.6-1:compile - omitted for duplicate)
[INFO] |  \- fop:fop:jar:0.20.5:compile
[INFO] |     +- batik:batik-1.5-fop:jar:0.20-5:compile
[INFO] |     +- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] |     +- (xalan:xalan:jar:2.4.1:compile - omitted for duplicate)
[INFO] |     +- xerces:xercesImpl:jar:2.2.1:compile
[INFO] |     \- avalon-framework:avalon-framework:jar:4.0:compile
[INFO] +- batik:batik-gui-util:jar:1.6-1:provided (scope not updated to compile)
[INFO] |  \- (batik:batik-ext:jar:1.6-1:provided - omitted for duplicate)
[INFO] +- batik:batik-ext:jar:1.6-1:provided
[INFO] |  \- xml-apis:xmlParserAPIs:jar:2.0.2:provided
[INFO] +- rhino:js:jar:1.5R4.1:provided
[INFO] \- xalan:xalan:jar:2.4.1:provided (scope not updated to compile)

如果您使用 maven,您可以将一些依赖项设置为<scope>provided</scope>

例如,我可以毫无问题地排除这些,这节省了我大约。1.6MB:

<dependencies>
...
    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-gui-util</artifactId>
        <version>1.6-1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-ext</artifactId>
        <version>1.6-1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>rhino</groupId>
        <artifactId>js</artifactId>
        <version>1.5R4.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>2.4.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

似乎这些是最大的依赖项:

http://repo.maven.apache.org/maven2/xerces/xercesImpl/2.2.1/xercesImpl-2.2.1.jar (816 KB at 851.9 KB/sec)
http://repo.maven.apache.org/maven2/xalan/xalan/2.4.1/xalan-2.4.1.jar (1007 KB at 479.7 KB/sec)
http://repo.maven.apache.org/maven2/fop/fop/0.20.5/fop-0.20.5.jar (1485 KB at 1011.7 KB/sec)
http://repo.maven.apache.org/maven2/batik/batik-1.5-fop/0.20-5/batik-1.5-fop-0.20-5.jar (2063 KB at 936.0 KB/sec)
于 2016-03-05T09:49:25.367 回答
1

不完全确定您想要完成什么,但ProGuard可以让您过滤 jar 中不被您的代码使用的类。

于 2012-01-19T22:27:32.333 回答