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

时间:2014-10-28 14:06:06

标签: android gradle android-studio sonatype

我正在使用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将会理解新版本和下载,一切正常。

我不想在每次更改时都做一个小版本。

4 个答案:

答案 0 :(得分: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 :(得分:10)

您还可以添加一个名为"更改" 的标记,以触发Gradle始终提取最新信息,例如:

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

答案 2 :(得分:6)

您需要配置缓存持续时间,默认情况下,gradle不会在24小时内查找更新:

http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:controlling_caching

答案 3 :(得分:0)

就我而言,删除整个<project_root>/.idea/libraries目录是唯一可行的解​​决方案。 AndroidStudio在那里存储了一些缓存的依赖项配置。删除目录会使它再次重新提取所有目录。

您可以编写一些脚本/任务来自动执行此删除操作,并将其作为Gradle clean任务的一部分运行。