comment télécharger des fichiers externes dans gradle?
J'ai un gradle projet qui nécessite des fichiers de données disponibles quelque part sur l'internet en utilisant le protocole http. L'objectif est que cette immuable fichier distant est tirée à la fois lors de la première génération. L'accumulation ultérieure ne devrait pas télécharger de nouveau.
Comment puis-je charger gradle pour aller chercher le fichier dans un répertoire local?
J'ai essayé
task fetch(type:Copy) {
from 'http://<myurl>'
into 'data'
}
mais il semble que la tâche de copie type ne peut pas traiter avec http.
Question Bonus: est-il un moyen de reprendre un déjà abandonné/interrompu télécharger comme wget -c
n'?
- Je l'ai fait avant d'utiliser des configurations personnalisées, afin que je puisse déclarer la ressource comme versionnées de dépendance. Puis la normale à la résolution de la manipulation ne sa magie pour vous
- Il y a une bonne réponse ici: stackoverflow.com/a/34327202/2873507
Vous devez vous connecter pour publier un commentaire.
Que diriez-vous simplement:
Vous pourriez probablement utiliser le Tâche Ant Obtenir pour cela. Je crois que cette tâche Ant ne prend pas en charge la reprise d'un téléchargement.
Pour ce faire, vous pouvez créer une tâche personnalisée avec nom
MyDownload
. Qui peut être n'importe quel nom de la classe de base. Cette tâche personnalisée définit les entrées et sorties de déterminer si la tâche à accomplir. Par exemple, si le fichier a déjà été téléchargée dans le répertoire spécifié, alors la tâche est marquée À JOUR. En interne, cette tâche personnalisée utilise la tâche AntGet
via leAntBuilder
.Avec cette tâche personnalisée, vous pouvez créer une nouvelle tâche de type
MyDownload
(votre tâche personnalisée de la classe). Cette tâche réglez l'entrée et la sortie des propriétés. Si vous voulez que cette tâche soit exécutée, le raccorder à la tâche que vous exécutez généralement via les dépendances de tâches (dependsOn
méthode). L'extrait de code suivant devrait vous donner l'idée:ant.setproxy(proxyhost: System.props['http.proxyHost'], ...)
.kotlin-dsl
vous pouvez faireant.invokeMethod("get", mapOf("src" to sourceUrl, "dest" to target))
en raison de la façon dont le Groovy générateur de soutenir les oeuvres.Essayer comme ça:
Vous pouvez vérifier plus ici: https://github.com/michel-kraemer/gradle-download-task
Pour moi fonctionne très bien..
juste maintenant couru dans post à venir de la tâche de téléchargement sur gradle forum.
Ressemble à la solution parfaite pour moi.. Pas (encore) à un fonctionnaire gradle libération si
La suggestion de Ben Crinières de commentaire a l'avantage qu'il peut tirer profit de maven coordonnées et maven de la résolution des dépendances. Par exemple, pour le téléchargement d'un Derby jar:
Définir une nouvelle configuration:
Dans la section des dépendances, ajoutez une ligne pour la configuration personnalisée
Ensuite, vous pouvez ajouter une tâche qui va tirer vers le bas les bons fichiers en cas de besoin (tout en profitant de l'maven cache):
(J'ai appris cela d' https://jiraaya.wordpress.com/2014/06/05/download-non-jar-dependency-in-gradle/).
En suivant le plugin:
Pour une tâche qui a pour but de téléchargement uniquement
Pour y compris l'option de téléchargement dans votre tâche:
Pour y compris l'option de téléchargement avec plusieurs téléchargements dans votre tâche:
Espère que cela a aidé 🙂