Android studio 如何检测AndroidStudio项目的build.gradle中何时存在依赖项库版本更新

Android studio 如何检测AndroidStudio项目的build.gradle中何时存在依赖项库版本更新,android-studio,gradle,android-gradle-plugin,build.gradle,android-build,Android Studio,Gradle,Android Gradle Plugin,Build.gradle,Android Build,我有一个android项目,有两个模块(典型的前端应用程序和后端应用程序)。我有三个build.gradle文件,每个模块一个,根目录一个 我构建依赖关系的方式是将所有版本提取到根级别build.gradle中的单独变量中 ext { // SDK and tools MIN_SDK_VERSION = 19 TARGET_SDK_VERSION = 23 COMPILE_SDK_VERSION = 23 BUILD_TOOLS_VERSION = '24

我有一个android项目,有两个模块(典型的前端应用程序和后端应用程序)。我有三个
build.gradle
文件,每个模块一个,根目录一个

我构建依赖关系的方式是将所有版本提取到根级别
build.gradle
中的单独变量中

ext {
    // SDK and tools
    MIN_SDK_VERSION = 19
    TARGET_SDK_VERSION = 23
    COMPILE_SDK_VERSION = 23
    BUILD_TOOLS_VERSION = '24'

    // app dependencies
    GOOGLE_API_CLIENT_VERSION = '1.19.0'
    GOOGLE_PLAY_SERVICES_VERSION = '8.4.0'
    ANDROID_SUPPORT_LIB_VERSION = '23.1.0'
    [...]

    // backend dependencies
    [...]
}
它们后来在我的say app
build.gradle
文件中使用

dependencies {
    [...]
    compile(group: 'com.google.oauth-client', name: 'google-oauth-client', version: rootProject.ext.GOOGLE_API_CLIENT_VERSION)
    /////////////////////////////////
    // Google Play Services explicit dependency
    compile(group: 'com.google.android.gms', name: 'play-services-auth', version: rootProject.ext.GOOGLE_PLAY_SERVICES_VERSION)
    compile(group: 'com.google.android.gms', name: 'play-services-plus', version: rootProject.ext.GOOGLE_PLAY_SERVICES_VERSION)
    [...]

    /////////////////////////////////
    // Local Testing
    testCompile(group: 'junit', name: 'junit', version: rootProject.ext.JUNIT_VERSION)
    testCompile(group: 'pl.pragmatists', name: 'JUnitParams', version: rootProject.ext.JUNIT_PARAMS_VERSION)
    [...]
}
注:我在某个地方的一个教程中发现了这个想法,我认为它非常漂亮


然而,我正在努力跟踪哪些lib版本可用,哪些是可升级的,等等。由于我有一个合理大小的依赖项列表,所以跟踪这些内容变得越来越困难。我很好奇其他人是如何处理这个问题的。谢谢。

我如何管理依赖项的摘要

所有依赖项定义都在
gradle/dependencies.gradle
中定义,该定义应用于所有项目和构建脚本。我通常把它分成三类。一个完整的例子是

然后在我的根项目中,我将其引导为

buildscript {
  apply from: "${rootDir}/gradle/dependencies.gradle"

  repositories {
    jcenter()
  }

  dependencies {
    gradle_plugins.each { name, dependency -> classpath dependency }
  }
}

allprojects {
  apply from: "${rootDir}/gradle/dependencies.gradle"

  repositories {
    jcenter()
  }
}
这允许将项目中的依赖项定义为:

dependencies {
  compile libraries.caffeine
}
为了检测更新的版本,我编写了。它通过查询存储库中的版本信息并将其与定义进行比较来生成报告。我经常手动运行它,但其他人在他们的CI中编写脚本并使用json或xml报告

在我编写插件之后,还开发了一些其他方法。Spring与Maven BOMs一起工作,Netfix也一样。Netflix用于定义动态版本并生成锁定文件以修复版本。还有依赖版本警报服务,尽管简单的CI作业可能是等效的


我从未使用过任何替代方案,因为它们(对我来说)似乎不那么直观,是在我有了一个好的解决方案多年后出现的,如果你来自Maven,这是一种熟悉的方法。希望其他人能够阐明其他方法的好处。

我如何管理依赖关系的摘要

所有依赖项定义都在
gradle/dependencies.gradle
中定义,该定义应用于所有项目和构建脚本。我通常把它分成三类。一个完整的例子是

然后在我的根项目中,我将其引导为

buildscript {
  apply from: "${rootDir}/gradle/dependencies.gradle"

  repositories {
    jcenter()
  }

  dependencies {
    gradle_plugins.each { name, dependency -> classpath dependency }
  }
}

allprojects {
  apply from: "${rootDir}/gradle/dependencies.gradle"

  repositories {
    jcenter()
  }
}
这允许将项目中的依赖项定义为:

dependencies {
  compile libraries.caffeine
}
为了检测更新的版本,我编写了。它通过查询存储库中的版本信息并将其与定义进行比较来生成报告。我经常手动运行它,但其他人在他们的CI中编写脚本并使用json或xml报告

在我编写插件之后,还开发了一些其他方法。Spring与Maven BOMs一起工作,Netfix也一样。Netflix用于定义动态版本并生成锁定文件以修复版本。还有依赖版本警报服务,尽管简单的CI作业可能是等效的


我从未使用过任何替代方案,因为它们(对我来说)似乎不那么直观,是在我有了一个好的解决方案多年后出现的,如果你来自Maven,这是一种熟悉的方法。希望其他人能够了解其他方法的好处。

我写这篇文章是为了检测更新。在我的项目中,我将坐标集中,例如在一个位置进行更新。感谢v.m@BenManes,这是一个很棒的工具,我肯定会采用您的集中方式,而且它比我今天的集中方式更进一步——我喜欢它(我还在github上查看了您的其他项目,非常酷!)。你能把这个作为一个正式的答复,我会把它标记为接受吗?thxI写了一篇文章来检测更新。在我的项目中,我将坐标集中,例如在一个位置进行更新。感谢v.m@BenManes,这是一个很棒的工具,我肯定会采用您的集中方式,而且它比我今天的集中方式更进一步——我喜欢它(我还在github上查看了您的其他项目,非常酷!)。你能把这个作为一个正式的答复,我会把它标记为接受吗?谢谢