2012-03-07 9 views
11

Estoy haciendo una conversión de maven a gradle y quiero ver las opiniones sobre la mejor manera de realizar lo siguiente. Actualmente tengo varios archivos en src/main/webapp. Algunos necesitan filtrado de una manera y algunos necesitan filtrado en otra.¿Cuál es la forma de gradle para filtrar un subconjunto de archivos en src/main/webapp?

Nocionalmente en src/main/webapp Tengo un directorio foo que contiene html y binarios y en la aplicación web muchos otros archivos, incluyendo html. Quiero filtrar solo los archivos foo/*. Html.

En mi build.gradle nocional que puedo hacer ya sea:

war { 
    eachFile { 
    if(shouldFilter(it)) { 
     it.filter(ReplaceTokens, tokens: [key: 'value']) 
    } 
    } 
} 

def shouldFilter(input) { 
    input.path.contains('foo') && input.name.endsWith('.html') 
} 

o mover cada subconjunto en su propio directorio que no está copiado por defecto

war { 
    from('src/main/foo-pre-filter') { 
    into 'foo' 
    include '*.html' 
    filter(ReplaceTokens, tokens: [key: 'value']) 
    } 
} 

O hay otra opción que me perdí ?

+0

¿Cuáles son los diferentes tipos de filtros que necesita hacer? Usaría el primer bloque, y eliminaría el if y dejaría que gradle ejecutara el filtro sobre todos los archivos – Ethan

+0

Gracias. Tu primera opción funcionó muy bien para mí. –

Respuesta

13

Si entiendo la pregunta correctamente, puede usar filesMatching. Además, lo haría como parte de la tarea processResources, a diferencia de la tarea war. Se vería algo como esto:

processResources { 
    filesMatching('foo/*.html') { 
     filter(ReplaceTokens, tokens: [key: 'value']) 
    } 
} 

realizo la pregunta inicial se le preguntó hace 2 años, por lo que probablemente no ayudará al autor de la pregunta, pero tal vez podría ayudar a alguien más en el futuro.

+4

Tenga en cuenta que tiene que importar 'ReplaceTokens', por ejemplo,' import org.apache.tools.ant.filters.ReplaceTokens' – Leukipp

+0

Esta respuesta funciona para archivos en 'src/main/resources' pero no para archivos en' src/main/webapp' como se le preguntó explícitamente en el título de la pregunta. – Codo

+0

¿Cuál es la solución para los archivos en src/main/webapp ??? – KaviK

Cuestiones relacionadas