我想知道是否可以编写一个Ant任务(如果需要,使用其他库)来减少JAR文件,以便它只包含某些类以及它们所依赖的类。例如,我有一个包含类A,B,C和D的JAR,其中A和B都扩展C. D与其他类无关。我想要做的是指定一个Ant任务,我只需要B类,最后得到一个只包含B和C的JAR文件。Ant任务只保留JAR中的某些类,并进行依赖性检查?
我见过this answer它提供了一种简单的方式来说“I不希望A和d”,和我想象代替‘’用‘排除包括’可以让我指定‘我想B和C’这样的:
<jar destfile="stripped.jar">
<zipfileset src="full.jar" includes="path/B.class;path/C.class"/>
</jar>
...但有这样做的依赖感知方式,以便我可以说“我想要B”但结束了包含B及其依赖项的JAR?
请注意,答案中提到的所有工具只能找到显式依赖关系,而不能通过反射获取依赖关系(其中包括依赖注入和许多应用程序框架采用的类似机制)。 – 2012-03-02 13:32:17