gpt4 book ai didi

maven - 如何使用 mavenLocal() 为 Gradle-build 指定 "updatepolicy"

转载 作者:行者123 更新时间:2023-12-03 02:59:18 27 4
gpt4 key购买 nike

我正在使用 Gradle 作为我项目的构建工具。除了我的本地开发计算机之外,还有一个 Nexus 存储库管理器缓存来自 Maven Central(和其他)的包以及本地发布和 SNAPSHOT 构建,它们至少每天由 Jenkins CI 发布。

build.gradle 中,我有以下 repos 定义:

repositories {
mavenLocal()
maven { url http://url.to.nexus:8081/nexus/... }
flatDir {
...
}
}

该项目 (A) 引用了几个内部库(例如 B)——也在 SNAPSHOT 版本中。如果我构建 A,则从 Nexus 获取 B 的引用快照版本,因为 mavenLocal 中没有版本并且 Jenkins 发布了所需的版本- 所以一切都很好。

如果我更改了 B 中的某些内容并想立即在 A 中使用,我会在本地构建/安装 B(使用 gradle install) 并且当前的 SNAPSHOT 进入 mavenLocal 使其可用于 A 的构建。但是从这一次开始,B总是mavenLocal 获取。即使一段时间后同事更改了 B 并且 Nexus 上有更新的 SNAPSHOT 版本,它也不会被使用。

使用 Maven 可以指定一个 updatePolicydaily (这也是默认的)来解决这个问题。但我看不到如何在 Gradle 中执行此操作的方法(除了每天清除一次 ~/.m2/repository )。

== 更新 ==

根据jlb的评论,补充一下:

我没有在 Maven 设置中定义任何存储库,因为依赖项解析和 Artifact 下载完全由 gradle 管理。所以所有的存储库都只在 Gradle 的构建脚本中定义。使用本地 Maven 存储库只是一种(通常推荐的)解决方法,以便在其他项目中使用本地(中间)构建的库,而无需每次都将它们发布到某个存储库管理器。 IMO 这在扩展库时是必不可少的(上面示例中的 B)。

此外,这仅在存储库的顺序按上述定义时才有效。如果存储库中存在相同快照版本的 Artifact ,则不会检查进一步的存储库,即使那里可能有更新的(快照)构建可用。

最佳答案

我在这里找到了答案:https://discuss.gradle.org/t/how-to-get-gradle-to-download-newer-snapshots-to-gradle-cache-when-using-an-ivy-repository/7344

Since SNAPSHOTs are a Maven concept, they aren't treated as anything special in an 'ivy' repository. Unfortunately, there's not (yet) any way to specify a custom pattern for a 'maven' repository, so you're a bit stuck.

The best way to tell Gradle to check for updated versions of a dependency is to flag the dependency as 'changing'. Gradle will then check for updates every 24 hours, but this can be configured using the resolutionStrategy DSL.

configurations.all {
// check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
dependencies {
compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}

关于maven - 如何使用 mavenLocal() 为 Gradle-build 指定 "updatepolicy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35745475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com