ANT / ProGuard:在使用 zipgroupfileset 打包之前从*within* 3rd 方 JAR 中删除文件
ANT / ProGuard: Removing files from *within* 3rd party JAR before packing using zipgroupfileset
我正在创建一些运行可用的 JAR(桌面 JavaFX 应用程序)。
我有一个包含第 3 方 JAR 的文件集:
<fileset id="shared_lib" dir="${aux.debian.lib.dir}">
<include name="commons-lang3-3.4.jar"/>
<include name="commons-io-2.4.jar"/>
...
</fileset>
然后我使用 zipgroupfileset 将它们包含在最终的 运行nable JAR 中:
<jar destfile="myapp.jar" filesetmanifest="mergewithoutmain">
<zipgroupfileset refid="shared_lib"/>
<manifest>
<attribute name="Main-Class" value="mypackage.myapp"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="./classes" />
</jar>
当我然后 运行 ProGuard 我多次收到以下警告(因为每个压缩的 JAR 包含 LICENSE.txt 和 NOTICE.txt):
[proguard] Warning: can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [myapp.jar:META-INF/LICENSE.txt])
[proguard] Warning: can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [myapp.jar:META-INF/NOTICE.txt])
我在定义文件集时尝试了各种排除选项,但它们只从文件集中排除文件,而不是从包含的 JAR 中排除文件。
是否可以简单地过滤作为 zipgroup 文件集的一部分压缩的内容?也许在 ProGuard 中?
这只是一个小麻烦,因为一切都与警告一起工作,但令我恼火的是,我感觉应该很简单的东西却没有出现。
您可以将 duplicate="preserve"
添加到 <jar>
元素,如 the documentation:
中所述
duplicate
- behavior when a duplicate file is found. Valid values are "add", "preserve", and "fail". The default value is "add".
我正在创建一些运行可用的 JAR(桌面 JavaFX 应用程序)。
我有一个包含第 3 方 JAR 的文件集:
<fileset id="shared_lib" dir="${aux.debian.lib.dir}">
<include name="commons-lang3-3.4.jar"/>
<include name="commons-io-2.4.jar"/>
...
</fileset>
然后我使用 zipgroupfileset 将它们包含在最终的 运行nable JAR 中:
<jar destfile="myapp.jar" filesetmanifest="mergewithoutmain">
<zipgroupfileset refid="shared_lib"/>
<manifest>
<attribute name="Main-Class" value="mypackage.myapp"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="./classes" />
</jar>
当我然后 运行 ProGuard 我多次收到以下警告(因为每个压缩的 JAR 包含 LICENSE.txt 和 NOTICE.txt):
[proguard] Warning: can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [myapp.jar:META-INF/LICENSE.txt])
[proguard] Warning: can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [myapp.jar:META-INF/NOTICE.txt])
我在定义文件集时尝试了各种排除选项,但它们只从文件集中排除文件,而不是从包含的 JAR 中排除文件。
是否可以简单地过滤作为 zipgroup 文件集的一部分压缩的内容?也许在 ProGuard 中?
这只是一个小麻烦,因为一切都与警告一起工作,但令我恼火的是,我感觉应该很简单的东西却没有出现。
您可以将 duplicate="preserve"
添加到 <jar>
元素,如 the documentation:
duplicate
- behavior when a duplicate file is found. Valid values are "add", "preserve", and "fail". The default value is "add".