【问题标题】:Scala multi-module project?Scala多模块项目?
【发布时间】:2015-07-21 11:22:21
【问题描述】:
  • 我有Java背景和学习Scala的想法。
  • 我喜欢使用Maven 的其中一个原因是我可以将项目作为多maven 模块。例子?
Project/pom.xml
       /persistence/pom.xml
       /business/pom.xml
       /services/pom.xml

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

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

【问题讨论】:

    标签: java scala maven 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 是的。聚合根项目主要是为了便于一次性编译所有内容(默认情况下)。您始终可以切换到单独的项目并仅构建它们
    • 感谢您的澄清。
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2017-09-20
    • 1970-01-01
    相关资源
    最近更新 更多