使用 zipgroupfileset 从 Ant Build 中排除 Jar



我创建了一个包含Filter的 Jar 项目。编译Filter代码时,我需要使用servlet-api.jar

但是当我想在另一个应用程序中使用 Jar 时,我想以这样一种方式构建 jar 它会排除servlet-api.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.*包。

zipgroupfilesetexcludes 属性用于选择要从中选取条目的存档,而不是筛选存档的内容。 zipgroupfileset始终包含匹配存档中包含的所有内容。

如果您知道哪个归档包含 servlet 类,那么简单的解决方案是将其从zipgroupfileset中排除并添加一个显式zipfileset

如果您不知道存档,则可以使用 archives 资源集合模拟zipgroupfileset并将其包装到restrict容器中。类似的东西

<restrict>
  <archives>
    <zips>
      <fileset dir="dist/lib/"/>
    </zips>
  </archives>
  <not>
    <name name="javax/servlet/*"/>
  </not>
</restrict>

最新更新