Scala多模块项目?
Posted
技术标签:
【中文标题】Scala多模块项目?【英文标题】:Scala multi-module project? 【发布时间】:2015-07-21 11:22:21 【问题描述】: 我有Java
背景和学习Scala
的想法。
我喜欢使用Maven
的其中一个原因是我可以将项目作为多maven 模块。例子?
Project/pom.xml /persistence/pom.xml /business/pom.xml /services/pom.xml
它的好处是每个模块都可以有自己的依赖项,并且可以独立测试,而不是运行一个单体应用程序。
我们如何在Scala
、sbt
或其生态系统中实现类似的目标?
【问题讨论】:
【参考方案1】:你绝对可以做到。它被称为SBT Multi-Project build。您可以使用以下方式定义一个主项目和多个子项目(来自上面的文档链接):
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 为例。
【讨论】:
这对旧版本的 SBT 使用过时的语法。当前基于宏的定义看起来不同且更清晰。见here。 一主二孩不是唯一的配置吧?是不是也可以有两个主人,一个普通的孩子? @jhegedus 是的。聚合根项目主要是为了便于一次性编译所有内容(默认情况下)。您始终可以切换到单独的项目并仅构建它们 感谢您的澄清。以上是关于Scala多模块项目?的主要内容,如果未能解决你的问题,请参考以下文章
在多模块 Java/scala 项目中有一个通用的 webapp?
Scala,docker - 如何使用 sbt-native-packager 在多模块应用程序中设置 mainClass?