2012-10-05 36 views
7

Estoy intentando crear un archivo war con Gradle, pero estoy teniendo un problema excluyendo un directorio e incluyendo otro que tenga los mismos nombres, pero con directorios principales diferentes.Gradle: War Task has Conflicting Includes/Excludes

Por favor, observe en el primer ejemplo de código siguiente que ninguno de los css/ directorios están siendo incluidos en la final war archivo - supongo que porque Gradle piensa que yo quiero excluir cualquier directorio llamadocss/ independientemente de su ruta absoluta.

Básicamente quiero excluir src/main/webapp/css e incluir build/tmp/css porque este último contiene el código minificado. ¿Cómo puedo conseguir esto? Intenté especificar una ruta absoluta de varias maneras, pero no he tenido éxito.

war { 
    dependsOn minify 
    from('build/tmp/') { include ('css/') } 
    exclude('WEB-INF/classes/', 'css/') 
} 

Si no excluyo css/ así:

war { 
    dependsOn minify 
    from('build/tmp/') { include ('css/') } 
    exclude('WEB-INF/classes/') 
} 

entonces el resultado es que tanto el código minified y no se incluye miniaturizada.

Respuesta

5

No estoy seguro de por qué se excluye WEB-INF/classes/css en lugar de src/main/webapp/css en su build.gradle, pero la copia de los archivos CSS minified en lugar de los originales se logra mediante:

apply plugin: 'war' 

war { 
    // dependsOn 'minify' 

    from 'src/main/webapp' 
    exclude 'css' // or: "exclude 'WEB-INF/classes/css'" 

    from('build/tmp/css') { 
    include '**/*.css' 
    into 'css' // or: "into 'WEB-INF/classes/css'" 
    } 
} 
+0

El propósito de excluir '('WEB -INF/classes/',' css/') 'es excluir ambos directorios en realidad. 'css /' no está dentro de 'classes'. Aparte de eso, el 'into' css'' parece hacer el truco. – david