SBT具有管理项目依赖关系的功能,您可以直接引用现有的github项目。
val projectA = RootProject(uri("git://github.com/...."))
val projectB = Project("projectB", file(".")) dependsOn(project)
不幸的是,由于存在错误 - 依赖项目(projectA)中的任何更改都不会反映在使用此依赖项(projectB)的项目中,即使您调用sbt update
。
https://github.com/sbt/sbt/issues/1284
看起来他们很快就会解决这个问题。
但有解决方法:
How do I refresh updated Git dependency artifacts in SBT?
删除~/.sbt/staging/
有帮助。
显然,这种删除应该在项目加载的早期阶段进行。
我创建了一个简单的删除任务,并将其定义为对update
任务的依赖 - 但它看起来已经太晚了,并且没有按预期工作。
[info] Loading project definition from projectB
// next 4 stages are skipped if it's already cloned.
// Cloning into ... projectA
// [info] Loading project definition from projectA
// [info] Updating projectA
// [info] Done updating.
[info] Updating projectB <<<--- where the removal is happening, too late...
我可以依赖的任务是什么?
答案 0 :(得分:0)
至于知道,我找到了以下解决方案。
我刚刚在我的build.sbt
中定义了方法,返回空Seq
并执行必要的删除,我直接在项目定义中调用它,其中定义了设置:
lazy val commonSettings = doRemove ++ Seq(... other settings.
绝对不是最佳实践方法,但是做了工作。