有什么方法可以将胖罐子和稀罐子区分开吗?

时间:2020-07-12 11:38:31

标签: java maven jar

我想避免在classpath中有胖子。 有没有一种方法可以检测某个jar文件是否由多个jar文件编译而成(除了查看其大小以外)?

2 个答案:

答案 0 :(得分:1)

这不是直接可能的。唯一的方法是查看是否包含库的依赖项。假设您有一个类为a / b / Foo的库,并且它依赖于外部库(也有一个类)bar.jar和类c / d / Baz。 现在,如果罐子中有两个类(a / b / Foo和c / d / Baz),我会说这是一个胖罐子。

答案 1 :(得分:-1)

如果您使用的是maven插件,请使用以下插件

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

您可以使用包含 descriptorRefs 的配置,该配置告诉maven此配置应构建哪种类型的程序集。

示例:

    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration> 

具有依赖关系的罐是maven的预制描述符 告诉Maven使用类似于FatJar的依赖项来构建jar

然后只需启动 mvn清洁程序包

对于Thin Jar,我没有解决方案,但是如果您有spring boot项目 这个仓库可以做到。 https://mvnrepository.com/artifact/org.springframework.boot.experimental/spring-boot-thin-layout/1.0.25.RELEASE

也许两者结合可以帮助您。