Gradle:查找使用+

时间:2018-02-04 16:33:53

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

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

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

compile 'test:test:+'

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

我正在以这种方式使用它:

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

但我的输出是这样的:

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

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

6 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:7)

所有简单,开放的视图层次结构Project,请参阅外部库enter image description here

答案 2 :(得分:3)

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

解决方案1 ​​ -

./gradlew app:dependencies

或者

解决方案2 -

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

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

解决方案3 -

您可以检查项目 .idea文件夹

项目内的

- > .idea / libraries

您还可以看到所使用的依赖项的最终版本。

答案 3 :(得分:3)

将依赖项添加为"编译' test:test:+'"建立项目。

然后在" 项目"文件夹结构层次结构在" 外部库"在文件夹结构的最底部,它将与其版本一起。将该版本与您的依赖项一起使用,然后重新同步/构建项目。

答案 4 :(得分:3)

您可以执行以下操作:

  • 使用包含jar文件的配置
  • 过滤jar文件的名称
  • 打印结果

这将打印完整路径以及版本。如果需要,您可以只提取jar名称。

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

输出示例:

ZIP&#39; /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&#39;

答案 5 :(得分:2)

使用&#39; +&#39;这不是最佳做法。签名以始终使用最新的库版本,因为如果需要,您将无法拥有可重复的版本。

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