我有以下两个项目的结构 -
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 命令。我怎么能这样做?
答案 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。