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

它的好处是每个模块都可以有自己的依赖项,并且可以独立测试,而不是运行一个单体应用程序。

我们如何在Scalasbt 或其生态系统中实现类似的目标?

【问题讨论】:

【参考方案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?

尝试执行编译任务但无法加载神秘模块

1.1springboot 多模块项目开发

vue多项目多模块打包

使用Maven构建多模块项目