Domanda

Ho un obiettivo di build.xml che crea un file Zip. Per evitare di creare la Zip se nessun file è stato aggiornato, mi piacerebbe controllare gli aggiornamenti in anticipo. Per quanto ne so, uptodate è il compito di utilizzo.

Ecco le pertinenti sezioni (semplificato) di script:

<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>

Tuttavia, non riesce a causa uptodate srcfiles deve fare riferimento a un fileset, non un filelist. Eppure, non posso usare un fileset perché richiederebbe un attributo dir, che non riesco a impostare, perché i file di origine non condividono una directory di base.

Naturalmente, ho potuto solo copiare tutti i file in una directory comune prima di zippare, in tal modo la possibilità di utilizzare fileset, ma mi chiedevo se ci fosse una soluzione alternativa.

sto usando Ant 1.8.1

È stato utile?

Soluzione

Invece di usare <srcfiles>, provare a utilizzare <srcresources>. <srcfiles> deve essere un set di file, ma <srcresource> può essere un'unione di qualsiasi raccolta di risorse, e che dovrebbe includere un filelist.

Non riesco a fare qualsiasi prova in questo momento, ma dovrebbe essere simile a questa:

<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>

La speranza che funziona per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top