Comment puis-je prolonger gradle est propre tâche pour supprimer un fichier?
Jusqu'à présent, j'ai ajouté ce qui suit à mon construire.gradle
apply plugin: 'base'
clean << {
delete '${rootDir}/api-library/auto-generated-classes/'
println '${rootDir}/api-library/auto-generated-classes/'
}
Cependant n'est pas seulement mon fichier n'est pas supprimé, mais l'instruction print montre que ${rootDir}
n'est pas converti à la racine du répertoire de mon projet. Pourquoi ne pas en faire ce travail, ce que les concepts qui me manque?
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin d'utiliser des guillemets. Aussi, la baisse de la
<<
et l'utilisationdoFirst
au lieu de cela, si vous prévoyez de faire de la suppression au cours de l'exécution. Quelque chose comme ceci:Gradle scripts sont écrits en Groovy, DSL. En Groovy, vous devez utiliser des guillemets pour la chaîne d'interpolation (lorsque vous utilisez
${}
comme des espaces réservés). Jetez un oeil à ici.execution
phase. Les appels doFirst et doLast peut être exécutée plusieurs fois. Ils ajoutent une action au début ou à la fin de la tâche de la liste des actions. Lorsque la tâche exécute, les actions dans la liste d'actions sont exécutées dans l'ordre. de docs<<
est équivalent pourclean.doLast
.doFirst
etdoLast
commande des opérations de l' exécution phase,ce qui est rarement pertinent pour les opérations de suppression.
Dans ce cas, vous n'avez pas besoin d'eux.
Le propre de la tâche à partir de la base est de type Supprimer,
il vous suffit de passer une fermeture à dire à configuration temps que de supprimer lorsqu'il exécute:
COMME mushfek0001 correctement le souligne dans sa réponse, vous devez utiliser des guillemets pour l'interpolation de variable de travail:
Vous devez avoir au moins la base de plugin appliquée pour que cela fonctionne, la plupart des autres plugins, comme le plug-in Java, appliquez une base ou de déclarer leur propre
clean
tâche de type delete Supprimer tâche. L'erreur que vous obtiendriez si vous n'avez pas c'est un manqueclean
méthode.delete '${buildDir}/someFile'
ne permettra pas de résoudre la variable pourbuildDir
. Vous avez besoin d'utiliser"
ici, par exemple,delete "$buildDir/someFile"
'
à"
. Double wuotes sont exigé pour GStringsdelete
méthode de laDelete
tâche: > Ajoute que certains fichiers soient supprimés par cette tâche. En tant que tel, cela ne remplace pas le comportement précédent ( c'est à dire précédente liste de fichiers à supprimer ), il ajoute juste pour elle.Could not find method clean() for arguments [build_6vh7849xb7rs3m0ite221ir66$_run_closure6@20f01807]
delete fileTree(dir: "${projectDir}", include: '**.ext')
Voir stackoverflow.com/q/27285885/3495031Afin de prolonger la propreté tâche, vous pouvez utiliser
ou
Ces éléments vont vous permettre d'injecter vos propres actions dans le procédé de nettoyage. Afin de supprimer les fichiers et les répertoires, vous pouvez utiliser le menu "fichier" de l'API qui ne nécessite pas de plug-ins additionnels.
Voici un exemple qui va supprimer un fichier et un répertoire comme la dernière étape dans le nettoyage de la tâche:
Ci-dessous fonctionne pour moi (je préfère utiliser
dependsOn
),Gradle Kotlin Script analogique: