3 votes

Comment puis-je forcer Gradle à obtenir la version snapshot la plus récente de mon paquet ?

J'ai un paquet Maven que j'ai hébergé sur le registre de paquets de GitHub.

A chaque fois que je fais une mise à jour du paquet, j'exécute mvn deploy pour publier les changements, mais si j'exécute simplement gradle install sur l'application dépendante, il ne semble pas installer la dernière version du package (je ne sais pas si settings.xml est pertinente pour cette question, je l'ai donc supprimée, mais elle peut être vue au lien de ma question précédente).

J'avais un problème similaire avec l'utilisation de la dernière version snapshot du paquet dans un autre dépendant, qui utilisait Maven comme gestionnaire de paquet/outil de construction au lieu de Gradle. Cela a été résolu en cochant une case pour "toujours mettre à jour les snapshots" dans les paramètres de Maven. J'ai également coché cette case dans ce projet, mais cela ne semble pas résoudre le problème maintenant.

Ce que j'ai essayé :

  • Invalidation du cache et redémarrage d'IntelliJ

  • réimportation de tous les projets gradle

  • en supprimant la dépendance de mon build.gradle et ensuite réimporter les projets et installer, puis le rajouter et réimporter tous les projets et installer

  • en cours d'exécution ./gradlew build -x test --refresh-dependencies (test désactivé car ils échouaient)

Voici le journal après avoir exécuté gradle install :

4:07:08 PM: Executing task 'install'...

> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :jar SKIPPED
> Task :install

BUILD SUCCESSFUL in 2s
3 actionable tasks: 1 executed, 2 up-to-date
4:07:10 PM: Task execution finished 'install'.

Dans mon build.gradle J'utilise la syntaxe suivante pour ma dépendance (sous dépendances) :

compile('com.companyname:packagename:0.0.3-SNAPSHOT')

et voici ce que j'ai sous dépôts :

maven {
        url "https://maven.pkg.github.com/companyname/packagename"
        credentials {
            username "TaylorBurke"
            password "*****************"
        }
    }

Je ne sais pas si c'est lié, mais lorsque j'entre dans mes paramètres Maven pour essayer de mettre à jour le référentiel, j'obtiens cette erreur :

authorization-exception

Voilà, je crois que j'ai tout inclus. Est-ce un problème de configuration avec Maven, Gradle ou IntelliJ ?

Edit : parce qu'il a été suggéré de fermer cette question, je signale que le lien vers l'autre question ne traite pas de l'installation avec Gradle, il traite simplement d'une erreur après avoir exécuté mvn deploy . J'ai déjà déployé le nouveau paquet avec succès et je peux obtenir la nouvelle version à partir de mon autre application. Mon problème est spécifique à gradle install . Même si la réponse acceptée mentionne qu'il a eu un problème similaire en utilisant Gradle (mais mon problème ne concerne pas non plus le déploiement), il poursuit en disant que les versions snapshot apporteraient une solution au problème exprimé, et j'utilise déjà une version snapshot dans ce paquet. Cette question est clairement très différente et n'est pas du tout liée à la mienne.

3voto

Bjørn Vester Points 4466

Vous avez essayé plusieurs choses avec IntelliJ, mais le problème se produit lorsque vous exécutez la compilation à partir de la ligne de commande ( ./gradlew build ). Cela devrait être une bonne indication que le problème ne vient pas d'IntelliJ.

Par défaut, Gradle mettra en cache les dépendances changeantes (par exemple, les dépendances SNAPHOST) pendant 24 heures. Pendant cette période, il ne demandera pas de nouvelles versions au référentiel. Ainsi, si vous publiez une nouvelle version sous le même nom, Gradle pourrait ne pas la voir avant un jour.

Utilisation de la --refresh-dependencies permet à Gradle d'ignorer le cache, et donc de télécharger à nouveau les artefacts.

Vous pouvez également modifier la période de rétention de la mémoire cache par le biais d'une fonction RésolutionStratégie . Vous pouvez également le configurer pour qu'il vérifie toujours les dépendances modifiées si vous le souhaitez.

Pour en savoir plus sur les dépendances dynamiques, cliquez ici : https://docs.gradle.org/current/userguide/dynamic_versions.html


Si vous êtes curieux, le cache d'artefact de Gradle est par défaut situé dans $USER_HOME/.gradle/caches/modules-2/files-2.1 (les chiffres peuvent être différents selon la version de Gradle que vous utilisez). Ce cache n'est pas lié à celui que vous mentionnez dans IntelliJ.

De même, l'erreur d'authentification dans le navigateur du dépôt maven d'IntelliJ est due au fait que vos informations d'identification se trouvent dans la configuration de Gradle et non dans IntelliJ. Ce problème n'est donc pas non plus lié à Gradle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X