我创建了一个包含 Filter
的 Jar 项目。
当我编译Filter
代码时,我需要使用servlet-api.jar
。
但是当我想在另一个应用程序中使用该 Jar 时,我想以排除 servlet-api.jar
的方式构建该 Jar。
我正在将 Apache Ant 与 NetBeans 8 结合使用:
我在 build.xml
中添加了以下代码。
<target name="-post-jar">
<jar destfile="dist/MyJar.jar">
<zipfileset src="dist/MyJarAsLibrary.jar"/>
<zipgroupfileset dir="dist/lib/." excludes="javax/*"/>
</jar>
</target>
我使用过 Apache Ant zipgroupfileset 。
但我在谷歌上搜索发现了文件的排除项。
我尝试将 servlet 包排除为 javax/*
,但它不起作用。
不知道如何排除特定的包。
我发现 zipfileset
几乎没有排除,但我需要使用 zipgroupfileset
并排除 javax.servelt.*
包。
最佳答案
excludes
zipgroupfileset
的属性用于选择要从中选取条目的文件,而不是过滤文件的内容。 zipgroupfileset
始终包含匹配文件中包含的所有内容。
如果您知道哪个存档包含 servlet 类,简单的解决方案是将其从 zipgroupfileset
中排除。并添加显式 zipfileset
.
如果你不知道存档,可以模仿zipgroupfileset
使用archives
资源集合并将其包装到 restrict
中容器。类似的东西
<restrict>
<archives>
<zips>
<fileset dir="dist/lib/"/>
</zips>
</archives>
<not>
<name name="javax/servlet/*"/>
</not>
</restrict>
关于java - 使用 zipgroupfileset 从 Ant Build 中排除 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35577351/