simbolo - Gradle Copie archivos y expanda solo algunos de ellos y/o ignore los signos de dólar en otros
porque cuando abro un documento de word se duplica (2)
Tengo un árbol de archivos que me gustaría copiar con Gradle, y para algunos de los archivos (por ejemplo, terminando en .txt), me gustaría hacer algunas substiciones de propiedad. Por ejemplo, tengo:
task "copyAndroidAssets$flavor" (type: Copy,
dependsOn: ["cleanAndroidAssets", "copyAndroidRes$flavor"] ) {
from "build/assets/${flavorLc}/release/"
into ''../android/assets''
expand ( versionName: myVersionName, versionCode: myVersionCode )
}
El problema es que algunos de los archivos en el árbol que se está copiando tienen signos de dólar ($) que no tienen nada que ver con la expansión de propiedades, y esto crea el error SimpleTemplateScript6.groovy: 1: illegal string body character after dollar sign;
.
En mi escenario específico, todos los archivos, excepto uno, simplemente pueden copiarse como están. Solo un archivo único, about.txt
, necesita tener valores sustituidos. ¿Alguna sugerencia sobre una manera simple de hacer esto?
Gracias al enlace de Opal en los comentarios, encontré una solución. El enlace muestra que es posible tener múltiples fuentes y cada una de ellas puede tener un tratamiento de expand
separado . Por lo tanto, en mi caso, solo quería expandir archivos .txt
, así que dividí el contenido en dos partes usando include
y exclude
siguiente manera:
task "copyAndroidAssets$flavor" (type: Copy,
dependsOn: ["cleanAndroidAssets", "copyAndroidRes$flavor"] ) {
from ("build/assets/${flavorLc}/release/") {
include ''**/*.txt''
expand ( versionName: versionName, versionCode: versionCode )
}
from ("build/assets/${flavorLc}/release/") {
exclude ''**/*.txt''
}
into ''../android/assets''
expand ( versionName: myVersionName, versionCode: myVersionCode )
}
Ahora (Gradle 2.3.1) hay una mejor solución: https://issues.gradle.org/browse/GRADLE-1566
processResources {
inputs.property(''version'', version)
filesMatching("**/version.properties") {
expand version: version
} }
En mi caso, quiero expandir las propiedades del proyecto solo en archivos yaml:
processResources {
filesMatching("**/*.yaml") {
expand project.properties
}
}