我想避免在classpath中有胖子。 有没有一种方法可以检测某个jar文件是否由多个jar文件编译而成(除了查看其大小以外)?
答案 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
也许两者结合可以帮助您。