Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何依赖一个通用的交叉项目_Scala_Sbt_Scala.js - Fatal编程技术网

Scala 如何依赖一个通用的交叉项目

Scala 如何依赖一个通用的交叉项目,scala,sbt,scala.js,Scala,Sbt,Scala.js,我正在定义多个JVM/JS交叉项目。每个项目都包含一些常见的JVM/JS scala代码,我想将这些代码提取到每个项目都可以依赖的通用项目中。有人能给我推荐一下为常规项目和相关项目定义build.scala文件的最佳方法吗?您可以创建 假设你有这样的项目结构 root project/Build.scala project1 src/ project1.sbt project2 src/ pr

我正在定义多个JVM/JS交叉项目。每个项目都包含一些常见的JVM/JS scala代码,我想将这些代码提取到每个项目都可以依赖的通用项目中。有人能给我推荐一下为常规项目和相关项目定义build.scala文件的最佳方法吗?

您可以创建

假设你有这样的项目结构

root        
    project/Build.scala
    project1
        src/
        project1.sbt
    project2
        src/
        project2.sbt
    projectN
        src/
        projectN.sbt
您可以在Build.scala中轻松定义依赖项

您可以创建

假设你有这样的项目结构

root        
    project/Build.scala
    project1
        src/
        project1.sbt
    project2
        src/
        project2.sbt
    projectN
        src/
        projectN.sbt
您可以在Build.scala中轻松定义依赖项

CrossProject支持您使用的常规dependsOn操作。因此,您可以:

// call to settings needed so for an implicit conversion to kick in
lazy val common = crossProject.settings() 
lazy val p1 = crossProject.dependsOn(common)
lazy val p2 = crossProject.dependsOn(common)

lazy val commonJVM = common.jvm
lazy val commonJS = common.js
lazy val p1JVM = p1.jvm
lazy val p1JS = p1.js
lazy val p2JVM = p2.jvm
lazy val p2JS = p2.js
GitHub上有一个连接。

CrossProject支持您使用的正常Dependesson操作。因此,您可以:

// call to settings needed so for an implicit conversion to kick in
lazy val common = crossProject.settings() 
lazy val p1 = crossProject.dependsOn(common)
lazy val p2 = crossProject.dependsOn(common)

lazy val commonJVM = common.jvm
lazy val commonJS = common.js
lazy val p1JVM = p1.jvm
lazy val p1JS = p1.js
lazy val p2JVM = p2.jvm
lazy val p2JS = p2.js

GitHub上有一个问题。

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

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

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


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

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

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


当我这样做时,我得到一个断言失败:目录…common/js不包含在构建根目录…p1中。公共项目应该完全独立于其他项目,因此它不应该是任何其他项目的子项目。我无法复制此更新的答案以包含我正在使用的确切构建文件。我使用的是sbt 0.13.7。你能告诉我你在用什么吗?你能给我sbt>项目的输出吗?我最终得到了下面的解决方案。老实说,我不知道我是怎么到那里的!使用sbt 13.8和scala.js 0.6.5执行此操作时,我得到一个断言失败:目录…common/js不包含在构建根目录…p1中。公共项目应该完全独立于其他项目,因此它不应该是任何其他项目的子项目。我无法复制此更新的答案以包含我正在使用的确切构建文件。我使用的是sbt 0.13.7。你能告诉我你在用什么吗?你能给我sbt>项目的输出吗?我最终得到了下面的解决方案。老实说,我不知道我是怎么到那里的!使用SBT13.8和scala.js0.6.5