sbt:assembly和publishLocal在另一个项目上

时间:2014-08-12 06:23:14

标签: scala sbt

我有以下两个项目的结构 -

projA
  -- build.sbt
projB
  -- build.sbt

projB对projA具有代码级别依赖性(作为libraryDependencies的一部分列出)。然而,将projB作为projA的模块或子项目是不可行的,反之亦然。

我在projB的build.sbt中有任务来创建一个ZIP包(非胖子)。 ZIP包括库和projA的JAR。

每次我想在projB中构建ZIP时,我必须确保projA已编译并发布到local-ivy-repo。只有在那之后,我在projB中生成的ZIP才能为projA提供正确的 JAR。

我想在projB的build.sbt中运行projA的 compile publishLocal 命令。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

执行此操作的最简单方法是使projA 依赖projB而不是依赖项。即在projB/build.sbt

lazy val projA = RootProject("../projA")

lazy val projB = project.in(file(".")).dependsOn(projA)

这可以确保projB中的compile会自动调用projA中的compile,同样也可以调用其他命令。

请参阅SBT文档中的Multi-Project Builds