Gradle:根据Maven本地或远程存储库中的最新版本来解决SNAPSHOT依赖性

纳撒尼尔·瓦格纳

我想让gradle智能地将最新的SNAPSHOT用于可用的给定依赖项。

假设我有一个这样的构建文件:

mavenCentral()
//    if (gradle.startParameter.refreshDependencies == false) {
    mavenLocal()
//   }
    maven {
      url "my_local_repo.com
   }
}

具有如下所示的依赖项:

compile (group: 'com.mystuff', name: 'my-library', version: '1.0.0-SNAPSHOT', changing: 'true')

在Maven本地和远程仓库“ my_local_repo.com”中都可能存在哪些问题,如何确保Gradle始终使用最新快照进行编译?

我在这里阅读:

http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html

具体来说,要点8.5:

一个项目可以有多个存储库。Gradle将按照指定的顺序在每个存储库中查找依赖项,并在包含所请求模块的第一个存储库处停止。

让我相信mavneLocal版本将永远是首选,但是我的阅读

51.7在这里:

http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:存储库

给定一个必需的依赖关系,Gradle首先尝试为该依赖关系解析模块。依次检查每个存储库,首先搜索指示该模块存在的模块描述符文件(POM或Ivy文件)。如果未找到模块描述符,则Gradle将搜索主模块工件文件的存在,指示该模块在存储库中存在。...在检查完每个存储库中的模块后,Gradle将选择“最佳”使用。使用以下条件完成此操作:

和51.2.4

或者,有时即使相同版本,您请求的模块也可以随时间变化。这种类型的更改模块的一个示例是Maven SNAPSHOT模块,该模块始终指向发布的最新工件。换句话说,标准的Maven快照是一个永不停滞的模块,可以说,它是一个“不断变化的模块”。

大量的泥泞。似乎说所有的回购都经过检查,并且做出了“最佳”选择(在这种情况下,大概是最新的)。

马克·维埃拉

我认为您忘了在51.7节中强调的内容是:

当依赖项是由静态版本声明的,并且在存储库中找到模块描述符文件时,则无需继续搜索以后的存储库,并且该过程的其余部分会被短路。

符合第8.5节中的规定。但是可以,对于更改模块(即快照),Gradle将检查每个存储库以找到最新的工件。对于静态模块,它将仅使用找到的第一个模块。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Gradle:如何将 URL 解析为存储库中最新版本的 SNAPSHOT 版本?

如何确保git存储库中的所有Java项目都具有最新版本或所需版本的Maven依赖项?

如何使 Eclipse 引用远程存储库中的最新版本而不是工作区中的当前版本?

将Xamarin更新到最新版本,并且文件依赖性似乎不起作用?

MongoDB Java驱动程序最新版本(4.1.0)在Maven存储库中不可用

Gradle 为某些库获取最新版本

Gradle无法解析到存储库上的最新版本

如何找出我们在Gradle中包含的任何依赖项的最新版本?

如何在Git存储库中获得最新版本

尝试安装最新版本时wkhtmltopdf的依赖性问题

如何合并旧版本存储库中的zip文件中的代码与最新版本?

为什么Gradle版本插件看不到某些依赖项的最新版本?

Gradle依赖项:使用的是最新版本还是最旧版本?

build.gradle的依赖关系,用于okhttp的更新和最新版本

如何检查Gradle中使用的依赖项的最新版本

Maven-始终下载最新版本的依赖项或插件

如何告诉Maven使用最新版本的依赖项?

使用最新版本的android支持库编译项目依赖项

最新版本的Glide提供依赖错误

nuget spec依赖项,获取最新版本?

在本地安装最新版本的 Open Shift

最新版本的Java Maven插件兼容性错误

从源存储库或PPA升级到最新版本的Git

Ansible-从Github存储库下载最新版本的二进制文件

迦太基:如何获取给定存储库的最新版本?

git clone 不是克隆某个存储库的最新版本吗?

Gradle不使用最新版本的支持库吗?

远程调试器在IntelliJ IDEA 2018.3的最新版本中挂起

配置Eclipse以使用最新版本的Gradle