【问题标题】:Gradle: find resolved version of a dependency imported with +Gradle:查找使用 + 导入的依赖项的已解析版本
【发布时间】:2018-07-14 14:12:35
【问题描述】:

我想在 gradle 中打印 dependency 的最新版本。

我以这种方式添加了我的依赖项:

compile 'test:test:+'

现在我想打印我的依赖版本,因为我想知道我正在使用哪个版本。

我就是这样用的:

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

但我的输出是这样的:

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

无论如何我可以获得我的依赖项的真实版本而不是+

【问题讨论】:

标签: java android gradle android-gradle-plugin build-tools


【解决方案1】:

app 模块的build.gradle 中,我导入了Square 的Moshi 库,如下所示:

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

然后我在终端中执行了以下命令:

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

这是我收到的输出:

【讨论】:

    【解决方案2】:

    所有简单、开放的视图项目层次结构和查看外部库

    【讨论】:

    • 正如OP在问题第一句中提到的:I want to print the last version of a dependency **in gradle**.
    • 如果你想找到最新版本的库,请使用gradle please
    【解决方案3】:

    如果要查看所有依赖项的概览,可以使用此命令进行检查 -

    解决方案 1-

    ./gradlew app:dependencies
    

    或者

    解决方案 2-

    如果您想检查任何特定的依赖关系。您可以使用 gradles 的内置 'dependencyInsight :-

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

    解决方案 3-

    你可以查看你的项目.idea文件夹

    在您的项目中 -> .idea/libraries

    您还可以在此处查看使用的依赖项的最终版本。

    【讨论】:

      【解决方案4】:

      您可以执行以下操作:

      • 使用包含您的 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'

      【讨论】:

        【解决方案5】:

        将依赖项添加为“compile 'test:test:+'”后,构建项目。

        然后在 "Project" 文件夹结构层次结构中找到文件夹结构最底部的 "External Libraries" 中的依赖关系,它会连同它的版本在那里。将该版本与您的依赖项一起使用并再次重新同步/构建项目。

        【讨论】:

          【解决方案6】:

          使用“+”号来始终使用最新的库版本不是最佳做法,因为如果需要,您无法获得可重复的构建。

          我的意思是,如果您必须从源代码控制管理系统(例如 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]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-09-16
            • 2020-06-14
            • 2017-01-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-07
            相关资源
            最近更新 更多