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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top