我正在创建一些可运行的罐子(桌面Javafx应用程序)。
我有一个我包括的第三方罐子的文件集:
<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将其包含在最终可运行的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时,我会多次收到以下警告(因为每个Zipped Jars都包含许可证.txt和Note.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])
我在定义文件集时尝试了各种排除选项,但是它们仅从文件集中排除文件,而不是从include jars中排除文件。
是否可以简单地过滤zipgroupfileset的一部分被滤除的东西?也许在舞会中?
这只是一个轻微的烦恼,因为一切都可以在警告中起作用,但是让我感到烦恼的是,我有一种感觉很简单的东西就是避开我。
您可以将duplicate="preserve"
添加到<jar>
元素,如文档中所述:
重复
- 当找到重复文件时的行为。有效值是"添加","保存"one_answers"失败"。默认值是" add"。