【问题标题】:How to get newest snapshot of a dependency without changing version in gradle?如何在不更改 gradle 版本的情况下获取依赖项的最新快照?
【发布时间】:2017-06-22 20:30:00
【问题描述】:

我构建了一个自己的库,并将其部署在一个 nexus 存储库上。此快照经常更改,因此并非每次更改都会获得新的版本号。我的问题是,如果不更改使用此库的项目中的版本号,我就无法获得最新的代码。我尝试了“--refresh-dependencies”,还尝试通过删除“\caches\modules-2\files-2.1\my.dependency”下此依赖项的文件夹来清除缓存中的依赖项
我也试过这个:

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

有谁知道尽管版本号没有改变,我如何强制成绩下载依赖项的最新状态?

【问题讨论】:

  • 不,我试过了,但是没有用。但是我忘了在我的帖子里说。我会编辑它。 }
  • 为获得最佳效果,您应该包含构建脚本中的所有相关部分。

标签: gradle build.gradle


【解决方案1】:

首先确保您的快照具有正确的版本格式:

dependencies {
    compile group: "groupId", name: "artifactId", version: "1.0-SNAPSHOT"
}

如果你没有使用-SNAPSHOT后缀(或者你没有使用Maven仓库),你必须指出你的依赖正在改变:

dependencies {
    compile group: "groupId", name: "artifactId", version: "1.0", changing: true
}

那么你必须告诉 Gradle 不要缓存变化的依赖,否则它只会每 24 小时更新一次:

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

如果您还将依赖项配置为动态版本,如下所示:

dependencies {
    compile group: "groupId", name: "artifactId", version: "1+", changing: true
}

然后你必须添加:

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
    resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
}

请注意,这可能会大大减慢您的构建速度。

如果这没有帮助,请删除 .gradle 目录的相关部分,或者再次删除整个目录。

如果这也无济于事,恐怕这将是您存储库方面的问题。

【讨论】:

  • 好的,删除 .gradle 目录有效。但实际上这不是我正在寻找的解决方案。我认为 gradle 会提供通过 build.gradle 做到这一点的可能性。好的,但总比没有好。
  • @Thunderforge 是的,我应该更新答案。下次请随时编辑它以纠正任何误解,谢谢。
  • @n00bst3r 检查您的存储库配置。 mavenLocal() 需要位于您的内部存储库管理器下方才能找到更新快照。
  • 在上面回答这一行(或者您没有使用 Maven 存储库),那么它不适用于非 Maven 存储库吗?我们正在使用 jfrog artifactory 并遵循 :0.0.1-SNAPSHOT 的约定,但仍然从缓存中挑选而不是最新的。有什么解决办法吗?
  • 我在 Jfrog 存储库中遇到了同样的问题
猜你喜欢
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
相关资源
最近更新 更多