Tengo un script de compilación que hace varias cosas (minimiza javascript, carga en amazon s3, etc.). La tarea minimizar ANT solo funciona en el javascript que he modificado e ignora el resto (no escribí este script). Me gustaría hacer algo similar para la tarea de amazon s3, donde solo se carga el contenido actualizado en la tarea. Cualquier pista sobre cómo hacer esto sería muy apreciada.Cómo ejecutar tareas ANT solo en archivos que se han modificado
Respuesta
En general, puede hacer esto para las tareas que tienen archivos de origen y destino usando File Mappers, de modo que la tarea solo se aplique a los archivos de origen que han cambiado. No sé si hay una forma de hacer algo donde Ant no pueda ver los archivos de destino, como subir archivos.
Siempre que no desee cambiar/reescribir la tarea S3 y quiera permanecer puramente en XML, podría usar el Uptodate Task y un directorio oculto para imitar este comportamiento, p. Ej. Guarde una copia de sus cargas (potencialmente grandes) o solo un archivo vacío con la fecha de creación de la última vez que subió. Los ejemplos en la página del manual deberían proporcionar muchos consejos a dónde ir.
Por supuesto, también podría escribir su propia tarea S2Uptodate, conectándose a S3 para comparar las fechas. La solución preferida depende de la cantidad de archivos que hay (por ejemplo, unos grandes en los que sería posible verificar cada uno en una operación distinta o un número infinito de pequeños que abordaría de manera diferente.
Usted también podría inspirarse en el uso y los elementos de Xjc task, aunque esto por supuesto opera puramente en archivos locales.
Puede seleccionar un conjunto de archivos con una etiqueta de fecha modificada. La etiqueta modificada es terriblemente poderosa, así que échale un vistazo : Ant Selectors - Modified.
Para que diga qué ha cambiado, puede mantener un caché en un archivo de propiedades, que se actualiza después de cada compilación correcta, a menos que utilizar el atributo delayupdate - así que quizás para probarlo, puede tener:
<param name="commitUpdate" value="false" />
[...]
<ftp ...>
<fileset dir="src">
<modified delayupdate="${commitUpdate}" />
</fileset>
</ftp>
Y, por supuesto, se podría establecer que commitUpdate a través de un parámetro de línea de comandos o algo así.
Es posible que desee considerar el OutOfDate Tarea Ant proporcionado por la biblioteca Ant-contrib. Le permite establecer una tarea secuencial/paralela para ejecutar para cada archivo fuente en un conjunto de archivos. Puede aplicar un asignador de archivos para definir los archivos de destino para probar los archivos de origen, de modo que solo los archivos que se han modificado ejecuten la tarea secuencial/paralela específica.
Control hacia fuera este hilo SO:
How to execute an Ant task only when source files have been modified?
En el caso de que las tareas no envuelvan el conjunto de archivos, los selectores de hormigas no son de mucha ayuda. –
- 1. Git post-receive para pagar solo los archivos que se han modificado/agregado en el push?
- 2. MSBuild: Copie los archivos (si se han modificado) y luego realice una acción (solo si los archivos se actualizaron)
- 3. ¿Cómo puedo averiguar qué archivos se han modificado en una sucursal?
- 4. ¿Cómo puedo ejecutar pruebas unitarias solo para los archivos fuente que han cambiado?
- 5. Determinar si se han agregado, eliminado o modificado archivos en un directorio
- 6. Obteniendo ANT scp solo archivos nuevos/modificados
- 7. Eclipse, ant y tareas personalizadas
- 8. Crear un archivo ant para ejecutar otros archivos ant
- 9. ¿Cómo cierra python los archivos que se han gc'ed?
- 10. C# .NET Tareas: Cómo recibir notificaciones cuando se han completado varias tareas
- 11. ¿Cómo comparto datos entre tareas Ant personalizadas?
- 12. eclipse: cambiar jre que se usa para ejecutar ant
- 13. Utilizando el enganche SVN post-commit para actualizar solo los archivos que se han confirmado
- 14. ¿Hay alguna forma de ejecutar Checkstyle solo en archivos .java SIN ANT?
- 15. Cómo crear una consulta que obtiene solo los datos que se han actualizado en una tabla
- 16. ¿Cómo se han compartido los archivos de registro en Windows?
- 17. ¿Cómo se "refactorizan" los archivos ant build.xml?
- 18. git piensa que los archivos han cambiado
- 19. use eclipse classpath en tareas ant
- 20. ¿Ejecutar Doxygen solo en archivos/módulos seleccionados?
- 21. Cómo ejecutar tareas en paralelo en MSBuild
- 22. ANT - Ejecutar un solo objetivo pero sin dependencias
- 23. ¿Cómo enumero solo los archivos que se comprometerán?
- 24. Use Ant para ejecutar solo pruebas JUnit específicas
- 25. Cómo ejecutar el compilador JAXB de ANT
- 26. Ejecutar el inicializador solo para las tareas de Rake
- 27. Ejecutar una tarea Ant en Maven solo si se establece una propiedad
- 28. gitignore - fatal: no se han agregado archivos
- 29. git volver a agregar solo los archivos que ya han sido montados
- 30. ¿Puedo hacer que Git me diga todos los archivos que un usuario ha modificado?
Si utilizo el URL para el activo en el guión build que el trabajo? – Akeem
Probablemente no, dudo que Ant vea un destino remoto, pero entonces no lo he intentado. –