2017-10-16 1 views
1

Je travaille sur un projet graduel qui devrait fonctionner sur une machine sans connexion internet. Pour cela, j'ai créé une tâche qui prend le cache gradle et le copie dans un autre répertoire, pour être utilisé comme référentiel local.Gradle ne télécharge pas les bocaux

J'ai construit le projet en mode en ligne et cela a fonctionné. J'ai exécuté ma tâche pour copier le cache dans le référentiel local et cela a fonctionné. Cependant, en essayant de courir gradle build --offline Je reçois des erreurs comme celle-ci (pour plusieurs fichiers jar différents):

Could not download commons-math3.jar (org.apache.commons:commons-math3:3.4.1): No cached version available for offline mode 

Vérification à la fois mon dépôt local et le cache gradle, je ne pouvais pas trouver le fichier jar concerné (en ce cas commons-math3-3.4.1.jar).

J'ai essayé d'utiliser gradle build --refresh-dependencies, j'ai essayé de supprimer le cache, puis en utilisant gradle build - rien, il ne serait pas télécharger les fichiers jar, seulement les fichiers pom. J'ai même essayé de télécharger les bocaux manuellement et de les mettre dans les répertoires corrects dans mon référentiel local ne fonctionnait pas.

Toute aide serait appréciée.

Répondre

0

Je ne pense pas que le cache Gradle puisse être transféré sur une autre machine comme celle-ci. J'essaie de créer un plugin qui peut copier les dépendances d'une configuration dans un répertoire local pour une utilisation hors ligne here mais j'ai atteint this issue où les POM parents et les nomenclatures ne sont pas accessibles à partir de l'API Gradle. J'ai un test qui échoue here démontrant l'utilisation du plugin et le manque de support parent POM. Une des suggestions sur la question est d'essayer le IvyPot plugin. Je n'ai pas essayé moi-même mais cela pourrait fonctionner pour ce que vous essayez.

+0

C'est un peu ce que je faisais (créé un plugin pour copier le cache dans un répertoire au sein du projet à utiliser en tant que référentiel hors ligne local). C'était moins sûr, mais cela fonctionne (j'avais construit et exécuté avec succès un plus petit projet de test hors ligne). Mon problème est que je n'ai pas le fichier jar mentionné (et 3 autres) dans le cache gradle, donc je ne peux pas les copier dans mon référentiel hors ligne, donc ça ne marche pas. –

+0

Cela semble assez hacky, le répertoire cache Gradle est une implémentation privée à laquelle vous ne devriez pas accéder. Si des jars sont manquants, je suppose que vous avez copié le cache avant ['Configuration.resolve()'] (https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/Configuration.html# resolve()) a été invoqué sur une ou plusieurs configurations –

+0

J'ai construit le projet en ligne, j'ai copié les bocaux et les poms, j'ai essayé de construire hors ligne et j'ai eu cette erreur. –

0

Vous pourriez avoir proxy activé, ajouter des détails de proxy dans le fichier fichier « gradle.properties » comme ci-dessous:

systemProp.http.proxyHost=your.proxy.com 
systemProp.http.proxyPort=XXXX 
systemProp.http.proxyUser=user 
systemProp.http.proxyPassword=password