Это более старый вопрос, но есть один очевидный способ исключить предупреждение о дубликатах, не включая дубликаты файлов. Вы можете сделать это одним из двух способов:
- Исключить дубликаты файлов каким-либо образом или
- Скопируйте файлы в промежуточную область, чтобы задача cp работала с дубликатами, а не с задачей jar.
Итак, вместо того, чтобы делать:
<jar destfile="${dist}/lib/app.jar">
<fileset dir="a" include="xml/data/*.{xml,dtd}"/>
<fileset dir="b" include="xml/data/*.{xml,dtd}"/>
<fileset dir="c" include="xml/data/*.{xml,dtd}"/>
</jar>
сделать одно из:
<jar destfile="${dist}/lib/app.jar">
<fileset dir="a" include="xml/data/*.{xml,dtd}"/>
<fileset dir="b" include="xml/data/*.xml"/>
<fileset dir="c" include="xml/data/*.xml"/>
</jar>
или
<copy todir="tmpdir">
<fileset dir="a" include="xml/data/*.{xml,dtd}"/>
<fileset dir="b" include="xml/data/*.{xml,dtd}"/>
<fileset dir="c" include="xml/data/*.{xml,dtd}"/>
</copy>
<jar destfile="${dist}/lib/app.jar">
<fileset dir="tmpdir" include="xml/data/*.{xml,dtd}"/>
</jar>
<delete dir="tmpdir"/>
Редактировать : Основываясь на комментарии к этому ответу, существует третий вариант, хотя это довольно трудоемкая работа ... Вы всегда можете получить исходный код задачи jar и изменить его чтобы он не распечатывал предупреждения. Вы можете сохранить это как локальную модификацию вашего дерева, переместить его в другой пакет и сохранить его самостоятельно, или попытаться вернуть исправление обратно в исходное состояние.