我有一个带有一些SNAPSHOT依赖项的项目,它使用gradle作为intellij中的构建工具。
问题是intellij正在使用现已过时的SNAPSHOTS。
当我在命令行上构建项目时
gradle build or
gradle clean build --refresh-dependencies
在命令行上获取最新的依赖项。我还设置了我的成绩文件,以便始终下载快照依赖项according to this answer。
如何强制intellij下载所有依赖项?
答案 0 :(得分:29)
在IntelliJ 2017.2中,您可以右键单击中的项目名称 Gradle Tool Window并从上下文菜单中选择刷新依赖关系。
这将刷新所有依赖项,而不仅仅是SNAPSHOTS,因此可能需要一段时间。我不知道其他版本的IntelliJ是否也有此功能。
答案 1 :(得分:26)
我遇到了一些非常棘手的快照。您可以尝试一些选项:
configurations.all {
resolutionStrategy.cacheDynamicVersionsFor 4, 'hours'
resolutionStrategy.cacheChangingModulesFor 4, 'hours'
}
此配置更改是最后一个选项,应谨慎使用。它基本上告诉Gradle更频繁地刷新本地缓存。进行这些更改后,应单击IntelliJ Gradle刷新按钮。答案 2 :(得分:13)
答案 3 :(得分:3)
答案 4 :(得分:2)
Gradle默认情况下将更改的模块缓存24小时。我们可以通过将Gradle标记为“更改”来告诉Gradle刷新或重新下载构建脚本中的依赖项。
请按照以下步骤操作:
步骤1 :通过将cacheChangingModulesFor
属性的值设置为0秒,告诉Gradle不要缓存更改的模块:
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
步骤2 :将需要刷新或重新下载的依赖项标记为更改模块:
dependencies {
compile("com.howtoprogram.buysell:payment-api:0.0.1-SNAPSHOT") {
changing = true
}
}
答案 5 :(得分:1)
确保 IntelliJ 添加所有依赖项的最简单方法是使项目缓存无效并重新启动。重新加载项目大约需要一分钟。
INTELLIJ IDE
File -> Invalidate Caches/Restart...
现在为了确保使用最新的快照,您必须在 gradle.build 文件中指定您正在使用的依赖项的版本。
通常,大多数存储库中都没有“最新”锚定版本。您只需查看最新版本即可。
理论上,如果您知道发布日期和版本控制系统,您可以编写一个 Groovy 函数来返回依赖项 URL 并将其传递给实现。
def getLatestVersion(){
...build version string
return version //As string
}
implementation getLatestVersion()
但即使您引用 CI/CD 管道,也不建议这样做,以防发生任何超出您控制范围的更改
答案 6 :(得分:0)