使用sbt进行多项目构建

时间:2015-01-13 19:21:56

标签: sbt

我对SBT完全不熟悉。假设我有三个Scala项目:project_a,project_b,project_c。我该如何将所有三个项目构建到一个jar文件中?假设我使用project_a作为根项目。目录结构类似于

--project_a
  --build.sbt
--project_b
--project_c

按照sbt webiste上的说明,我创建了一个build.sbt文件,看起来像

lazy val root = (project.in(file("."))).aggregate(project_b, project_c)
lazy val project_b = project
lazy val project_c = project

我将build.sbt放在project_a下。当我在project_a下运行sbt clean compile时,会在project_a文件夹下创建一个新的(有点空的)project_b和project_c文件夹。但是,在build.sbt文件中,我的意思是project_b和project_c来引用我已经创建的包含源代码和测试代码的原始文件夹,这些文件夹在project_a之外。

有人能让我知道我做错了什么吗?

由于

1 个答案:

答案 0 :(得分:2)

首先,您的multi-project设置不正确。

入门指南说:

  

聚合意味着在聚合项目上运行任务也将在聚合项目上运行它。

  • 如果您project_a使用project_bproject_c,那么您需要root project_a,{ {1}}和project_b
  • Root可以聚合所有三个(a,b和c),但它只聚合给sbt shell的命令,例如同时编译所有三个命令。
  • project_c应设置为依赖project_aproject_b

以下是一个例子:

project_c
  

我应该如何将所有三个项目构建到一个jar文件中?

  1. 如果您只想要自己项目中的* .class文件,可以在Macro Projects上看到示例。
  2. 如果您需要* .class文件和库依赖项,则需要sbt-assembly。