我想让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] 删除。
我来说两句