【问题标题】:Android Studio: Snapshot Dependencies Don't Update properlyAndroid Studio:快照依赖没有正确更新
【发布时间】:2014-12-23 23:29:16
【问题描述】:

我正在使用 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?时间旅行? :)
  • 这个问题已经 5 岁了,哈哈。
  • 我知道.. :)。 Android Studio 8.9 回到 2014 年……你一定是个时间旅行者。

标签: android gradle android-studio sonatype


【解决方案1】:

就我而言,使用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

【讨论】:

  • 这在dependencies部分。
【解决方案2】:

您还可以放置一个名为 “正在改变” 的标志,它会触发 Gradle 始终拉取最新的,例如:

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

【讨论】:

  • 我发现你必须同时耦合缓存持续时间,并且需要更改值才能保证其正常工作。即便如此,我仍然需要偶尔运行 --refresh-dependencies。查看我对已接受答案的评论。
  • 如何使用--refresh-dependencies?
【解决方案3】:

需要配置缓存时长,默认gradle 24小时不查找更新:

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

【讨论】:

  • 谢谢,我昨天想通了。再加上将依赖项标记为“变化”解决了这个问题。
  • 在我看来,将依赖项标记为“更改”只是允许它使用可能不同(更短)的缓存时间(如果您指定一个)。否则,它必须只使用“正常”缓存时间,您也可以将其指定为比通常更短的持续时间。
【解决方案4】:

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

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

【讨论】:

    猜你喜欢
    • 2014-11-16
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多