如何依赖一个共同的crossProject

时间:2015-10-23 10:12:29

标签: scala sbt scala.js

我正在定义多个JVM / JS交叉项目。每个包含一些常见的JVM / JS scala代码,我想将其提取到每个项目可以依赖的一般公共项目中。有人可以推荐我为普通和依赖项目定义build.scala文件的最佳方法吗?

3 个答案:

答案 0 :(得分:3)

<head>支持您习惯的正常CrossProject操作。所以你可以:

dependsOn

GitHub上有一个full example

答案 1 :(得分:1)

您可以创建Multi-project builds

让我们说你有这样的项目结构;

root        
    project/Build.scala
    project1
        src/
        project1.sbt
    project2
        src/
        project2.sbt
    projectN
        src/
        projectN.sbt

您可以在Build.scala

中轻松定义依赖关系
lazy val root = Project(id = "Main-Project",
    base = file(".")) aggregate(project1, project2,..)

lazy val project2 = Project(id = "project2",
    base = file("project1")).dependsOn(project1)

...

答案 2 :(得分:1)

我最终得到了下面的解决方案。

lazy val common = crossProject.in(file(".")).
    settings(
    ).
    jvmSettings(
    ).
    jsSettings(
    )

lazy val commonJVM = common.jvm
lazy val commonJS = common.js

...

lazy val p1 = crossProject.in(file(".")).
    settings(
    ).
    jvmSettings(
    ).
    jsSettings(
    ).
    jvmConfigure(_.dependsOn(ProjectRef(uri("../common"), "commonJVM"))).
    jsConfigure(_.dependsOn(ProjectRef(uri("../common"), "commonJS")))

lazy val p1JVM = p1.jvm.
    settings(...

lazy val p1JS = p1.js.
    settings(...