Wie zu verwenden filelist als fileset in uptodate Ant-Befehl?
-
14-10-2019 - |
Frage
Ich habe ein Ziel build.xml
erstellt eine Zip-Datei.Zu vermeiden, erstellen Sie die Zip-wenn keine Datei aktualisiert wurde, würde ich wie zu überprüfen, ob updates vorher.AFAIK, uptodate
ist die Aufgabe zu verwenden.
Hier ist der relevante (vereinfacht) script in den Abschnitten:
<filelist id="zip-files">
<file name="C:/main.exe" />
<file name="D:/other.dll" />
</filelist>
<target name="zip" depends="zip-check" unless="zip-uptodate">
<zip destfile="${zip-file}" >
<filelist refid="zip-files" />
</zip>
</target>
<target name="zip-check">
<uptodate property="zip-uptodate"
targetfile="${zip-file}">
<srcfiles refid="zip-files" />
</uptodate>
</target>
Jedoch, uptodate
schlägt fehl, da srcfiles
mit Bezug auf eine fileset
, nicht ein filelist
.Trotzdem kann ich Sie nicht verwenden fileset
da es erfordern würde, eine dir
Attribut, das kann ich nicht, weil die Quell-Dateien nicht teilen, einer Basis-Verzeichnis.
Natürlich könnte ich auch einfach kopieren Sie alle Dateien in einem gemeinsamen Verzeichnis, bevor Sie diese zippen und dann, so nutzen zu können fileset
,, aber ich Frage mich, ob es eine alternative Lösung.
Ich bin mit Ant 1.8.1
Lösung
Anstatt <srcfiles>
, versuchen Sie es mit <srcresources>
. <srcfiles>
muss ein fileset, aber <srcresource>
kann eine union der Erhebung von Ressourcen und einschließen sollte filelist
.
Ich kann das nicht testen, aber es sollte in etwa so Aussehen:
<filelist id="zip-files">
<file name="C:/main.exe" />
<file name="D:/other.dll" />
</filelist>
<target name="zip" depends="zip-check" unless="zip-uptodate">
<zip destfile="${zip-file}" >
<filelist refid="zip-files" />
</zip>
</target>
<target name="zip-check">
<union id="zip-union">
<filelist refid="zip-files"/>
</union>
<uptodate property="zip-uptodate"
targetfile="${zip-file}">
<srcresources refid="zip-union" />
</uptodate>
</target>
Hoffe, es funktioniert für Sie.