簡體   English   中英

Gradle:查找使用+導入的依賴項的已解析版本

[英]Gradle: find resolved version of a dependency imported with +

我想在gradle中打印dependency的最后一個版本。

我以這種方式添加了我的依賴:

compile 'test:test:+'

現在我想打印我的依賴版本,因為我想知道我正在使用哪個版本。

我正在以這種方式使用它:

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

但我的輸出是這樣的:

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

無論如何我可以得到我的依賴的真實版本而不是+

app模塊的build.gradle我導入了Square的Moshi庫,如下所示:


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

然后我在終端執行了以下命令:


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

這是我收到的輸出:

在此輸入圖像描述

所有簡單,開放的視圖層次結構Project和參見外部庫 在此輸入圖像描述

如果要檢查所有依賴項的概述,可以使用此命令檢查 -

方案1-

./gradlew app:dependencies

要么

溶液2-

如果你想檢查任何特定的依賴項。你可以使用gradles'內置'dependencyInsight: -

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

要么

方案3-

您可以檢查您的項目.idea文件夾

在你的項目中 - > .idea / libraries

您還可以看到所使用的依賴項的最終版本。

將依賴項添加為“compile”test:test:+'“構建項目后。

然后在“ Project ”文件夾結構層次結構中,在文件夾結構的最底部的“ 外部庫 ”中找到該依賴項,它將與其版本一起。 將該版本與您的依賴項一起使用,然后重新同步/構建項目。

您可以執行以下操作:

  • 使用包含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]

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM