Java 将多个JAR捆绑到一个JAR中,并从客户端应用程序中选择特定的JAR

Java 将多个JAR捆绑到一个JAR中,并从客户端应用程序中选择特定的JAR,java,android,maven,jar,maven-assembly-plugin,Java,Android,Maven,Jar,Maven Assembly Plugin,我正在开发一个库jar(更像是其他库的包装器),它依赖于多个其他库jar。我知道我可以使用eclipse创建一个单罐/胖罐并发布它。例如,我有三个库jar:Alib.jar、Blib.jar和Clib.jar。假设Alib.jar对Blib.jar有依赖关系。我可以制作一个胖罐子,比如fatlib.jar,它可以打包其中三个 (Alib.jar --> Blib.jar) + Clib.jar == packages into ==> fatlib.jar (common APIs)

我正在开发一个库jar(更像是其他库的包装器),它依赖于多个其他库jar。我知道我可以使用eclipse创建一个单罐/胖罐并发布它。例如,我有三个库jar:Alib.jar、Blib.jar和Clib.jar。假设Alib.jar对Blib.jar有依赖关系。我可以制作一个胖罐子,比如fatlib.jar,它可以打包其中三个

(Alib.jar --> Blib.jar) + Clib.jar == packages into ==> fatlib.jar (common APIs)

fatlib.jar == used by ==> client app
jar为客户端应用程序提供了一个公共API接口。这个常见的API使用Alib.jar、Blib.jar和Clib.jar,并根据请求选择正确的类。比方说,当客户端应用程序不使用依赖于Clib.jar的API时,客户端应用程序应该具有在构建自身(很可能是APK)时删除Clib.jar的灵活性。我想让客户端应用程序选择它在构建时真正需要的依赖项库jar

想知道这是否可能?我梦见了一些工具,比如FatJarEclipse插件,它向您展示了构建Jar时可以选择或删除的所有Jar。可能不是。
所以这里有一个问题:是否可以在编译时从父jar中选择内部jar?

实际上没有必要。只要使用ProGuard,它就会去除未使用的代码。想知道是否也可以使用ProGuard构建JAR?是的,它是: