Атрибут prefix
zipfileset
используется для описания того, где файлы должны появляться в созданном zip-файле. Поскольку вы хотите, чтобы файлы jar появлялись в корне zip-файла, вам не нужно указывать это, и вы можете не указывать его (я не уверен, каков будет результат установки его в «/», я думаю, безопаснее будет его опустить).
Похоже, ваша проблема в том, что ваши библиотеки хранятся в подкаталогах под вашим каталогом lib
, но вы хотите, чтобы они находились непосредственно в корне zip-файла. Задача 'zip', в отличие от задачи copy
, не принимает маппер напрямую, чтобы изменить способ отображения файлов в zip, но если вы используете ant 1.7 или более позднюю версию, он примет коллекцию ресурсов 1008 *. Вы можете использовать элемент mappedresources
с fileset
и flattenmapper
, чтобы получить нужный эффект:
<target name="myproject.distributable" depends="artifact.mycompany_myproject, myproject.javadoc" description="Build the distributable JAR for myproject">
<zip destfile="${basedir}/dist/myproject.zip">
<fileset file="${temp.jar.path.mycompany_myproject.jar}"/>
<mappedresources>
<fileset dir="mycompany_myproject/lib" includes="**/*.jar" />
<flattenmapper />
</mappedresources>
<zipfileset dir="docs/myproject" prefix="docs"/>
</zip>
</target>
Это означает, что вам не нужно сначала использовать copy
, чтобы поместить банки в зону подготовки.