Pregunta

Tengo un objetivo de build.xml que crea un archivo Zip. Para evitar la creación de la cremallera si no hay ningún archivo ha sido actualizado, me gustaría comprobar si hay actualizaciones de antemano. Que yo sepa, uptodate es la tarea de usar.

Aquí es las secciones (simplificado) de script relevantes:

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

Sin embargo, uptodate falla porque srcfiles debe hacer referencia a un fileset, no un filelist. Aún así, no puedo utilizar un fileset porque requeriría un atributo dir, que no puedo establecer debido a los archivos de origen no comparten un directorio base.

Por supuesto, podría simplemente copiar todos los archivos a un directorio común antes de comprimirlos, por tanto, ser capaz de usar fileset, pero me preguntaba si había una solución alternativa.

Estoy utilizando Ant 1.8.1

¿Fue útil?

Solución

Instead of using <srcfiles>, try using <srcresources>. <srcfiles> must be a fileset, but <srcresource> can be a union of any collection of resources, and that should include a filelist.

I can't do any test right now, but it should look something like this:

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

Hope it works for you.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top