Comment faire pour copier vers de multiples destinations, avec Gradle tâche de copie?
Je suis en train de copier un fichier vers plusieurs destinations à travers un Gradle tâche. J'ai trouvé ce qui suit dans d'autres sites, mais j'obtiens une ERREUR lors de l'exécution de cette tâche.
def filesToCopy = copySpec{
from 'somefile.jar'
rename {String fileName -> 'anotherfile.jar'}
}
task copyFile(type:Copy) {
with filesToCopy {
into 'dest1/'
}
with filesToCopy {
into 'dest2/'
}
}
ERREUR
Pas de signature de la méthode: org.gradle.l'api.interne.fichier.copie.CopySpecImpl.call() est applicable pour les types d'argument
Est-il un moyen pour copier plusieurs destinations dans un Gradle tâche?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez vraiment dans une tâche, vous faites quelque chose comme cela:
ext.dispersalList = [ 'dest1', 'dest2', ... ]
; la Tâche utilise la définition de la valeur de temps (vide) et non pas le "au moment de la construction" de la valeur. Cela signifie que je dois à plusieurs reprises définir la même tâche dans le sous-projetbuild.gradle
fichiers. Est-il un moyen de paramétrer tâches ainsi construit peut être plus SEC.une autre façon
pas il n'y a pas un moyen de faire de l'atm. Je voudrais créer séparée gradle tâches pour chaque répertoire cible
filesToCopyDest2
?filesToCopyDest2
est une tâcheAvec une Destination Commune Chemin d'accès de Base
Si votre destination chemins de partager un chemin commun préfixe (
dest_base
), alors vous pouvez utiliser quelque chose comme ceci:Par rapport à d'autres réponses qui utilisent le
copy
, cette approche conserve également Gradle est-À-JOUR des vérifications.L'extrait ci-dessus aurait pour résultat de sortie comme ceci:
CopySpec
s sont possibles. Je ne sais pas si c'est une nouvelle Gradle, mais il est en fait la meilleure solution, car il fournit à la fois À la DATE des vérifications de et ne pas créer de multiples tâches (ce qui peut être gênant pour un montant élevé de sous-répertoires).Ici est un général extrait sans copySpec pour Gradle 4.1. Comme l'a souligné l'astuce est d'utiliser une base et d'utilisation par rapport à l'intérieur de la fermeture (par exemple, de la fermeture).