Android Studio:快照依赖项不正确更新

12

我正在使用Android Studio 8.9进行开发。

我有一个build.gradle文件,其中定义了以下依赖项:

compile ('my.program.commons:my-program-commons:0.0.2-SNAPSHOT@jar')

这个依赖项存储在私有的Sonatype Nexus仓库中。

当我对my.program.commons代码进行更改时,我会上传到Nexus。

问题是,当我尝试针对新的SNAPSHOT编译时,Android Studio将无法捕捉到更改。

从命令行gradle运行可以成功构建,但是Android Studio将无法识别新文件。

如果我进行版本递增 - 例如从0.0.2-SNAPSHOT到0.0.3-SNAPSHOT,Android Studio将了解新版本并下载,一切正常。

我不想每次进行小版本递增。


等等.. Android Studio 8.9?时间旅行? :) - HBB20
这个问题已经五年了,哈哈。 - Nathaniel D. Waggoner
我知道... :)。 Android Studio 8.9 是在2014年发布的... 你一定是个时空旅行者。 - HBB20
4个回答

12

在我的情况下,使用 changing = true 对我没有用。但是配置缓存更改模块解决了我的问题。以下是示例代码,请添加到 build.gradle 文件中:

configurations.all {
    // Don't cache changing modules at all.
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

请查看:https://docs.gradle.org/current/userguide/dependency_management.html

1
这个需要放在“依赖”部分。 - Aritz

10

你还可以加上一个名为"changing"的标志,这将触发Gradle始终拉取最新的版本,例如:

compile ('my.program.commons:my-program-commons:0.0.2-SNAPSHOT@jar') {
 changing = true;
}

1
我发现你必须同时关注缓存持续时间和变化的值,才能确保它正常工作。即便如此,我仍然偶尔需要运行 --refresh-dependencies。请查看我对被接受答案的评论。 - Nathaniel D. Waggoner
如何使用 --refresh-dependencies? - Fang

7

谢谢,我昨天已经解决了这个问题。将依赖标记为“changing”与此有关。 - Nathaniel D. Waggoner
在我看来,将依赖项标记为“更改”只是允许它在指定一个潜在不同(较短)的缓存时间时使用。否则,它必须使用“正常”的缓存时间,你也可以将其指定为比通常持续时间更短的持续时间。 - DataGraham

0
在我的情况下,删除整个<project_root>/.idea/libraries目录是唯一有效的解决方案。AndroidStudio在那里存储了一些缓存依赖配置。删除该目录会使其重新获取所有依赖项的配置。
您可以编写一些脚本/任务来自动执行此删除操作,并将其作为Gradle clean任务的一部分运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接