は、ここでのAntでjavascript
言語でscript
を通してそれを行うための多少残酷な方法です。その後、<target>
で呼び出すことができます
<scriptdef name="getfilenamesfromzipfile" language="javascript">
<attribute name="zipfile" />
<attribute name="property" />
<![CDATA[
importClass(java.util.zip.ZipInputStream);
importClass(java.io.FileInputStream);
importClass(java.util.zip.ZipEntry);
importClass(java.lang.System);
file_name = attributes.get("zipfile");
property_to_set = attributes.get("property");
var stream = new ZipInputStream(new FileInputStream(file_name));
try {
var entry;
var list;
while ((entry = stream.getNextEntry()) != null) {
if (!entry.isDirectory()) {
list = list + entry.toString() + "\n";
}
}
project.setNewProperty(property_to_set, list);
} finally {
stream.close();
}
]]>
</scriptdef>
:
<target name="testzipfile">
<getfilenamesfromzipfile
zipfile="My.zip"
property="file.names.from.zip.file" />
<echo>List of files: ${file.name.from.zip.file}.</echo>
</target>
任意のより良い解決策は大歓迎です。
これは全体的に優れたアプローチです。しかし、後で、私はzipファイルの内容、つまり最終日の変更/タイムスタンプ、サイズ、チェックサムなどからより多くの情報を抽出する必要があることに気付き、スクリプティングで容易に洗練されると感じました。それにもかかわらず、私は私の元の質問に対するあなたの答えを受け入れたいと思います。 – Malvon
修正/タイムスタンプ/サイズのための@MalvonあなたはAnt addon Flakaを受け取り、zipfilesetでそれを使用することができます。ここで私の答えの最後のスニペットと同じです。> http://stackoverflow.com/a/21891513、antにはチェックサムタスク= > https://ant.apache.org/manual/Tasks/checksum.html; Ant Flakaを使用している場合は、ここで最後のバージョンを取る=> https://github.com/greg2001/ant-flaka; – Rebse
@Malvon P.S.もう一つのFlakaの例はこちら>> http://stackoverflow.com/a/5992436/130683、それ以外のスクリプトではもっと複雑になります。こちらをご覧くださいhttp://stackoverflow.com/a/14740667/130683 – Rebse