Ant タスクの一部として 2 つの zip ファイルを作成しようとしています。どちらも似ていますが、1 つには余分なデータが含まれています。コードを減らすために、ファイルセットを定義して参照したいと思います。唯一の問題は、エラーが発生することです。
仕事:
<target name="create-zips" depends="cleanup, compile, package-jar">
<zipfileset id="zipfiles">
<zipfileset dir="${ant.project.name}-dist" includes="${jarname}.jar" prefix="${title}"/>
<zipfileset dir="${scripts.dir}" includes="myprogram" filemode="755" prefix="${title}"/>
<zipfileset dir="${scripts.dir}" includes="myprogram_gui" filemode="755" prefix="${title}"/>
<zipfileset dir="${scripts.dir}" includes="myprogram_gui.command" filemode="755" prefix="${title}"/>
<zipfileset dir="${scripts.dir}" includes="myprogram.bat" filemode="755" prefix="${title}"/>
<zipfileset dir="${scripts.dir}" includes="myprogram_gui.bat" filemode="755" prefix="${title}"/>
<zipfileset dir="${docs.dir}" includes="myprogram_readme.txt" prefix="${title}"/>
</zipfileset>
<zip destfile="${deploy.dir}/myprogram_${version}.zip" whenempty="fail" defaultexcludes="true">
<zipfileset refid="zipfiles"/>
<zipfileset dir="${otherdata.dir}" includes="other/*.*" prefix="${title}"/>
</zip>
<zip destfile="${deploy.dir}/myprogram_noother_${version}.zip" whenempty="fail" defaultexcludes="true">
<zipfileset refid="zipfiles"/>
</zip>
</target>
タスクの実行時:
create-zips:
BUILD FAILED
/path/to/my/buildfile/build-tools.xml:119: Problem opening /path/to/my/data/docs/myprogram_readme.txt
ファイルが存在することを確認しました。readme インクルードを削除すると、別のファイルでエラーが発生するだけです。また、zipfileset をコピーして 2 つの別々のタグに貼り付けるだけでも、すべて正常に動作します。しかし、私はむしろそれをしたくありません。
編集: 2011 年 10 月 14 日にコンパイルされた Apache Ant(TM) バージョン 1.8.2、Mac OS X 10.7。他のプラットフォームでは試していません。