Scala 多模块项目?
Scala multi-module project?
- 我有
Java
的背景和学习的想法Scala
。
- 我喜欢使用
Maven
的其中一件事是我可以将项目创建为多 Maven 模块。例子?
Project/pom.xml
/persistence/pom.xml
/business/pom.xml
/services/pom.xml
它的好处是这些模块中的每一个都可以有自己的依赖关系,并且可以独立测试它们,而不是 运行 一个单一的应用程序。
我们如何在 Scala
、sbt
或其生态系统中实现类似的目标?
你一定可以的。它被称为SBT Multi-Project build。您可以定义一个主项目和多个子项目,如下所示(来自上面的文档 link):
import sbt._
import Keys._
object HelloBuild extends Build {
lazy val root = Project(id = "hello",
base = file(".")) aggregate(foo, bar)
lazy val foo = Project(id = "hello-foo",
base = file("foo"))
lazy val bar = Project(id = "hello-bar",
base = file("bar"))
}
每个项目都可以单独构建,您也可以将每个项目打包到一个单独的 JAR 中,或者将它们全部组合到一个主 JAR 中。每个项目都可以定义自己的依赖项,但如果需要也可以共享它们。基本上你有完全的控制权。例如,看一下我的项目构建文件 here。
- 我有
Java
的背景和学习的想法Scala
。 - 我喜欢使用
Maven
的其中一件事是我可以将项目创建为多 Maven 模块。例子?
Project/pom.xml /persistence/pom.xml /business/pom.xml /services/pom.xml
它的好处是这些模块中的每一个都可以有自己的依赖关系,并且可以独立测试它们,而不是 运行 一个单一的应用程序。
我们如何在 Scala
、sbt
或其生态系统中实现类似的目标?
你一定可以的。它被称为SBT Multi-Project build。您可以定义一个主项目和多个子项目,如下所示(来自上面的文档 link):
import sbt._
import Keys._
object HelloBuild extends Build {
lazy val root = Project(id = "hello",
base = file(".")) aggregate(foo, bar)
lazy val foo = Project(id = "hello-foo",
base = file("foo"))
lazy val bar = Project(id = "hello-bar",
base = file("bar"))
}
每个项目都可以单独构建,您也可以将每个项目打包到一个单独的 JAR 中,或者将它们全部组合到一个主 JAR 中。每个项目都可以定义自己的依赖项,但如果需要也可以共享它们。基本上你有完全的控制权。例如,看一下我的项目构建文件 here。