web-dev-qa-db-fra.com

Gradle: rechercher la version résolue d'une dépendance importée avec +

Je veux imprimer la dernière version d'un dependency en gradle.

J'ai ajouté ma dépendance de cette façon:

compile 'test:test:+'

maintenant je veux imprimer la version de ma dépendance, parce que je veux savoir quelle version j'utilise.

Je l'utilise de cette façon:

gradle dependencyInsight --configuration compile --dependency test:test

Mais ma sortie est la suivante:

+--- test:test:+ -> project : (*)

Existe-t-il de toute façon que je peux obtenir la version réelle de ma dépendance et non le +?

20
Daniel Taub

Dans app du module build.gradle J'ai importé la bibliothèque Moshi de Square comme suit:


    dependencies {
        compile 'com.squareup.moshi:moshi:+'
    }

Ensuite, j'ai exécuté la commande suivante dans le terminal:


./gradlew app:dependencyInsight --configuration compile --dependency com.squareup.moshi:moshi

Voici la sortie que j'ai reçue:

enter image description here

15
azizbekian

Tout projet de hiérarchie de vue facile et ouvert et voir les bibliothèques externes enter image description here

7
serg3z

Une fois que vous avez ajouté votre dépendance en tant que test de "compilation": test: + "" générez le projet.

Ensuite, dans la hiérarchie de la structure de dossiers "Project", trouvez cette dépendance dans "Bibliothèques externes" au bas de la structure de dossiers, elle le sera avec sa version. Utilisez cette version avec votre dépendance et resynchronisez/créez à nouveau le projet.

3
Dhaval Patel

Vous pouvez effectuer les opérations suivantes:

  • Utilisez la configuration qui contient votre fichier jar
  • Filtrez le nom du fichier jar
  • Imprimer les résultats

Cela imprimera le chemin complet ainsi que la version. Vous pouvez extraire uniquement le nom du bocal si nécessaire.

 task printPmdVersion << {
    FileTree pmdJar = zipTree(configurations.pmd.filter {
        dep -> dep.name.contains("pmd-core")
    }.singleFile)
    println pmdJar
}

Exemple de sortie:

Zip '/home/user/Java/gradle_user_home/caches/modules-2/files-2.1/net.sourceforge.pmd/pmd-core/5.4.1/28715c2f768b58759bb5b373365997c30ac35899/pmd-core-5.4.1.jar'

3
superbAfterSemperPhi

Ce n'est pas une bonne pratique d'utiliser le signe '+' pour toujours utiliser la dernière version de la bibliothèque car vous ne pourriez pas avoir une version répétable si vous en avez besoin.

Je veux dire, si vous devez vérifier votre version précédente de votre APK à partir de votre système de gestion du contrôle de source (par exemple Git) que vous savez que cela fonctionne bien, si vous compilez aujourd'hui (la nouvelle version de la bibliothèque aurait pu être publiée) ... peut-être votre ancienne ami APK qui fonctionnait bien ... maintenant, il ne fonctionne pas bien comme votre dernier.

Cela dit, je vous suggère d'utiliser un plugin gradle comme ça:

https://github.com/ben-manes/gradle-versions-plugin

Vous allez installer dans votre build.gradle au niveau du projet comme ça:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply plugin: 'com.github.ben-manes.versions'

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:3.0.1'
        classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Et vous trouverez une nouvelle tâche gradle nommée dependencyUpdate que si vous la déjeunez, elle vous rapportera toutes vos versions de bibliothèque par rapport aux plus récentes:

------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------

The following dependencies are using the latest milestone version:
 - com.github.ben-manes:gradle-versions-plugin:0.17.0
 - junit:junit:4.12

The following dependencies have later milestone versions:
 - com.Android.support:appcompat-v7 [26.1.0 -> 27.0.2]
 - com.Android.support.constraint:constraint-layout [1.0.2 -> 1.1.0-beta5]
 - com.Android.support.test.espresso:espresso-core [3.0.1 -> 3.0.2-alpha1]
 - com.Android.tools.build:gradle [3.0.1 -> 3.2.0-alpha03]
 - org.jacoco:org.jacoco.agent [0.7.4.201502262128 -> 0.8.0]
 - org.jacoco:org.jacoco.ant [0.7.4.201502262128 -> 0.8.0]
 - com.Android.support.test:runner [1.0.1 -> 1.0.2-alpha1]

enter image description here

2
shadowsheep