【问题标题】:Factoring libraryDependencies in multi project Build.sbt在多项目 Build.sbt 中分解 libraryDependencies
【发布时间】:2014-05-17 17:12:57
【问题描述】:

我正在尝试编写一个简洁的多项目Build.sbt,所以我尝试将所有库依赖项放在根项目中,然后让其他人依赖它。我的 Build.sbt 如下所示:

object KataBuild extends Build {

        lazy val fizzBuzz = Project(
            id = "fizzBuzz", 
            base = file("fizzBuzz"),
            settings = Project.defaultSettings ++ Seq(
                name := "fizzBuzz",
                version := "1.0",
                scalaVersion := "2.10.3"
            )
        )

        lazy val kata = Project(
            id = "scala-kata", 
            base = file("."),
            settings = Project.defaultSettings ++ Seq(
                name := "scala-kata",
                version := "1.0",
                scalaVersion := "2.10.3",
                libraryDependencies ++= Seq(
                    "org.scalatest" %% "scalatest" % "2.1.0" % "test"
                )
            )
        ) aggregate(fizzBuzz)

        fizzBuzz dependsOn(kata)

}

但从主项目 (scala-kata) 运行测试无法为 fizzBu​​zz 构建测试。我错过了什么?

【问题讨论】:

    标签: scala dependencies sbt multi-project


    【解决方案1】:

    您的问题类似于this one。简而言之,fizzBuzz.dependsOn(kata) 表示它的编译配置依赖于kata的编译配置,但是你想链接test配置。

    sbt 文档的 'Per-configuration classpath dependencies' 部分向您展示了如何创建 test->test 依赖项。


    但是,如果您不打算使用 kata 的测试源,而只是想在 fizzBuzz 中包含 Scala-Test,只需将其显式添加到 fizzBuzz 的库依赖项中即可.你可以定义一个辅助值

    lazy val scalaTest = "org.scalatest" %% "scalatest" % "2.1.0" % "test"
    

    然后您可以将其添加为子项目的库依赖项(libraryDependencies += scalaTest)。

    【讨论】:

    • 是的,我在子项目中不需要 kata 的测试源。我只是希望共享库依赖项(仅在 kata 项目中声明,子项目取决于它)。所以,据我所知,这是不可能的,我必须将它显式添加到所有子项目中,或者在 kata/src/test 中声明所有子项目的测试。我说的对吗?
    猜你喜欢
    • 2017-09-25
    • 2021-03-23
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2014-04-22
    • 2017-12-21
    相关资源
    最近更新 更多