我正在使用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将会理解新版本和下载,一切正常。
我不想在每次更改时都做一个小版本。
答案 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
任务的一部分运行。