我有一个Java应用程序,我打包成一个JAR。我创建了一个Ant脚本来做到这一点,因为我还需要将资源添加到JAR(图标等)。排除目录及其所有子目录?
现在,我有我在我的项目(Apache HttpClient和JSON库)中使用的库。我也将它们的内容复制到JAR中,因为它是最简单的方法。
我的构建文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar"
name="Create Runnable Jar">
<target name="create_run_jar">
<jar destfile="C:/Users/Pietu1998/Documents/Java/Whatever.jar"
filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class"
value="net.pietu1998.whatever" />
<attribute name="Class-Path" value="." />
</manifest>
<fileset dir="C:/Users/Pietu1998/Documents/Java/Whatever/bin"
includes="*.class" />
<fileset dir="C:/Users/Pietu1998/Documents/Java/Whatever/res" />
<zipfileset excludes="META-INF/**"
src="C:/Users/Pietu1998/Documents/Java/Whatever/lib/commons-codec-1.6.jar" />
<zipfileset excludes="META-INF/**"
src="C:/Users/Pietu1998/Documents/Java/Whatever/lib/commons-logging-1.1.3.jar" />
<!-- More (like 5) JARs -->
</jar>
</target>
</project>
然而,库(JAR文件)有自己的META-INF
文件夹,并且他们有很多在他们的东西;像LICENSE
,CONDITIONS
这样的文件以及Maven的文件夹maven
。
该项目是为个人使用,所以我只是想摆脱不必要的东西。我试过一些方法来排除所有META-INF
的东西,但总是有些东西被遗忘。
excludes="META-INF"
留下一切。excludes="META-INF/**"
离开maven
文件夹。**/excludes="META-INF/**"
,参见上文。
我相信我可以使用很多include-excludes或patternset
s,但会导致很多重复。
有没有办法(不适用于这种特殊情况下)排除一个文件夹(META-INF
这里)及其所有内容,包括子目录,最好用不太多的重复(对于很多库)?