使用Gradle是否有自动更新和管理Java/Scala依赖关系的方法?

使用Gradle是否有自动更新和管理Java/Scala依赖关系的方法?,java,scala,gradle,dependency-management,Java,Scala,Gradle,Dependency Management,在花了一段时间研究nodejs生态系统之后,我最近又回到了Scala项目上。在习惯了像npm和warn这样的包管理器之后,我觉得我需要重新思考我一直在使用的Java/Scala工具/流程。考虑到这一点,JVM世界中似乎存在几个问题,我想知道是否有一些自动化的解决方案: 给定一些没有版本的依赖项列表(但有组、模块),是否有一些自动方法来检测每个依赖项的有效版本组合(如果存在)是什么?具体而言,确保没有冲突的可传递依赖项? 我相信Java模块应该减少/消除这个问题,但我目前仅限于Java8,所以不能

在花了一段时间研究nodejs生态系统之后,我最近又回到了Scala项目上。在习惯了像
npm
warn
这样的包管理器之后,我觉得我需要重新思考我一直在使用的Java/Scala工具/流程。考虑到这一点,JVM世界中似乎存在几个问题,我想知道是否有一些自动化的解决方案:

  • 给定一些没有版本的依赖项列表(但有组、模块),是否有一些自动方法来检测每个依赖项的有效版本组合(如果存在)是什么?具体而言,确保没有冲突的可传递依赖项?
    我相信Java模块应该减少/消除这个问题,但我目前仅限于Java8,所以不能使用它们

  • 除了在my
    build.gradle
    中手动更改版本号外,是否有任何自动方法从cli更新依赖项?
    例如,我可以执行
    warn install@
    来记录我所依赖的nodejs库的新版本,并一步安装它-JVM项目中是否存在类似的情况

  • Java/Scala项目是否有类似的工具?基本上;这是一个工具,它会自动尝试更新我的依赖项,并使用新版本运行测试,如果出现任何问题,它会自动回滚



  • 如果有必要,我目前正在Scala 2.11项目中使用gradle作为构建工具;但我很想知道任何使用任何构建工具的混合语言项目的答案。最终,我只想避免手动检查我的每一个依赖项与其他依赖项之间的关系-其他任何东西都是非常精确的。

    我只能回答你问题的第3点,甚至这一点-只能部分回答

    你可能会对我感兴趣

    此插件不会更新您的依赖项(因此它更没有测试运行+回滚功能)

    但是,它将列出所有可以升级的依赖项,如下所示(这只是可能的格式之一):

    资料来源:


    我只能回答你问题的第三点,甚至这一点也只能部分回答

    你可能会对我感兴趣

    此插件不会更新您的依赖项(因此它更没有测试运行+回滚功能)

    但是,它将列出所有可以升级的依赖项,如下所示(这只是可能的格式之一):

    资料来源:


    这看起来很棒,谢谢!您知道这将如何报告具有冲突依赖项的依赖项更新吗?例如,
    av1.1
    依赖于
    bv1.1
    av1.2
    (最新)依赖于
    bv1.2
    cv1.1
    (最新)依赖于
    bv1.1
    cv1.1
    :这个插件会支持吗?我在git回购协议中找不到任何关于这方面的信息。我理解你的意思——你希望在依赖项解析中保持最大的谨慎,而Gradle的默认策略是不那么谨慎,只选择最高的版本,这通常是有效的(这意味着
    C v1.1
    在这种情况下将
    B v1.2
    用作其依赖项)。我不认为这个插件有你要问的功能,但是Gradle本身可以配置为。希望能有所帮助,尽管我们离您要求的自动化越来越远;)这看起来很棒,谢谢!您知道这将如何报告具有冲突依赖项的依赖项更新吗?例如,
    av1.1
    依赖于
    bv1.1
    av1.2
    (最新)依赖于
    bv1.2
    cv1.1
    (最新)依赖于
    bv1.1
    cv1.1
    :这个插件会支持吗?我在git回购协议中找不到任何关于这方面的信息。我理解你的意思——你希望在依赖项解析中保持最大的谨慎,而Gradle的默认策略是不那么谨慎,只选择最高的版本,这通常是有效的(这意味着
    C v1.1
    在这种情况下将
    B v1.2
    用作其依赖项)。我不认为这个插件有你要问的功能,但是Gradle本身可以配置为。希望能有所帮助,尽管我们离您要求的自动化越来越远;) The following dependencies are using the latest integration version: - backport-util-concurrent:backport-util-concurrent:3.1 - backport-util-concurrent:backport-util-concurrent-java12:3.1 The following dependencies exceed the version found at the integration revision level: - com.google.guava:guava [99.0-SNAPSHOT 3.0] http://code.google.com/p/google-guice/ - com.google.inject.extensions:guice-multibindings [2.0 -> 3.0] http://code.google.com/p/google-guice/ Gradle updates: - Gradle: [4.6 -> 4.7 -> 4.8-rc-2]
    boolean rejected = ['alpha', 'beta', 'rc', 'cr', 'm'].any { qualifier ->
      selection.candidate.version ==~ /(?i).*[.-]${qualifier}[.\d-]*/
    }