SBT如何禁用特定groupid的常春藤缓存

时间:2014-07-01 11:28:12

标签: sbt

我有几个Scala模块,我正在用SBT构建。其中一些(我称之为依赖模块)正在发布到Artifactory,然后被顶层模块使用。

代码的所有更改都在单独的git分支中完成。完成功能(或错误修复)后,该分支将在Jenkins中编译,然后部署到测试实例并交给QA团队。

因此,依赖模块中可能会有几个git分支具有不同的代码。

问题在于Ivy正在本地缓存这些模块,因此可能会使用来自不同分支(从本地缓存中获取)的依赖模块构建顶级模块。

我尝试将changing()指令添加到build.sbt中的依赖项规范中。

在这种情况下,Ivy忽略了本地缓存,每次都去Artifactory下载POM文件。然后它解析POM文件,但得出结论是它在本地缓存中具有带有该版本的jar文件,并从本地缓存而不是Artifactory中获取jar文件。这不是我想要的。

由于此时分支中的代码尚未集成到主分支中,因此不同的功能分支具有相同的版本号但代码不同是完全有效的。

有没有办法告诉Ivy(通过SBT)忽略某个groupid的本地缓存?或者至少是一个依赖?

1 个答案:

答案 0 :(得分:0)

如果您正在为依赖模块使用版本控制,则每个代码库更改必须生成不同的版本。 Ivy和maven希望一旦工件与特定版本一起发布,它将永远保持不变。这就是他们使用缓存文件的原因。如果要在每次编译时从存储库下载新版本,则应将-SNAPSHOT后缀添加到依赖模块版本号(例如:dep-module-1.1.1-SNAPSHOT)