web-dev-qa-db-ja.com

Gradle:+でインポートされた依存関係の解決済みバージョンを見つける

dependency の最後のバージョンをgradleで出力したい。

この方法で依存関係を追加しました:

compile 'test:test:+'

今、使用しているバージョンを知りたいので、依存関係のバージョンを出力します。

私はこのように使用しています:

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

しかし、私の出力はこれです:

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

とにかく、+ではなく、依存関係の実際のバージョンを取得できますか?

20
Daniel Taub

appモジュールのbuild.gradle Squareの Moshi ライブラリを次のようにインポートしました。


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

次に、ターミナルで次のコマンドを実行しました。


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

私が受け取った出力は次のとおりです。

enter image description here

15
azizbekian

ビュープロジェクトのすべての簡単でオープンな階層と外部ライブラリを参照してください enter image description here

7
serg3z

すべての依存関係の概要を確認する場合は、このコマンドで確認できます-

ソリューション1-

./gradlew app:dependencies

または

ソリューション2-

特定の依存関係を確認する場合は、gradlesのビルドイン 'dependencyInsightを使用できます:-

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

または

ソリューション3-

プロジェクトを確認できます。idea folder

プロジェクト内-> .idea/libraries

また、使用されている依存関係の最終バージョンを確認できます。

4
Thunder

「compile 'test:test:+'」として依存関係を追加したら、プロジェクトをビルドします。

次に、「Project」フォルダー構造階層内で、フォルダー構造の一番下にある「External Libraries」内の依存関係を見つけます。そのバージョンを依存関係で使用し、プロジェクトを再同期/ビルドします。

3
Dhaval Patel

次のことができます。

  • Jarファイルを含む構成を使用します
  • Jarファイルの名前のフィルター
  • 結果を印刷する

これにより、完全なパスとバージョンが出力されます。必要に応じて、jar名のみを抽出できます。

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

出力の例:

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'

常に最新のライブラリバージョンを使用するのに「+」記号を使用することはベストプラクティスではありません。必要な場合は繰り返し可能なビルドを作成できないためです。

つまり、ソース管理管理システム(Gitなど)からAPKの以前のバージョンをチェックアウトする必要がある場合、それが正常に機能することがわかっている場合、今日コンパイルする場合(新しいライブラリバージョンがリリースされている可能性があります)...正常に動作していたフレンドAPK ...現在、最新のように正常に動作していません。

それは、そのようなgradleプラグインを使用することをお勧めします:

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

次のようなプロジェクトレベルでbuild.gradleにインストールします。

// 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
}

また、dependencyUpdateという名前の新しいgradleタスクがあります。これを昼食にすると、最新バージョンと比較してすべてのライブラリバージョンがレポートされます。

------------------------------------------------------------
: 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