ScalaJS - 用于测试JVM上{JS`模块的一部分的SBT交叉项目配置

时间:2017-07-08 09:37:24

标签: scala sbt scala.js

下面的build.sbt适用于有3个模块的项目:

  1. Shared - 模块
    • 编译到JS平台和JVM平台
    • JVM模块,JS模块及其自身
    • 可见
  2. JVM - 模块
    • 编译到JVM-platform,
    • JS - 模块,Shared - 模块不可见,仅对自身可见
  3. JS - 模块
    • 编译成JS-platform
    • JVM - 模块,Shared - 模块不可见,仅对自身可见
  4. 我希望有一个第四个模块TestJSonJVM,它可以编译到JVM平台和JS平台,只有JS - 模块和它自己才能看到。

    TestJSonJVM - 模块的目的是将JS - modul的逻辑/代码的一部分提取到TestJSonJVM - 模块中,这样就可以在JVM上测试提取的部分-platform(具有比ScalaJS的JS平台更好的工具 - (debuging,IDE集成等)。)

    如何修改下面的build.sbt文件?这样就可以了吗?

    lazy val root = project
      .in(file("."))
      .aggregate(imJS, imJVM)
      .settings(
        scalaVersion := Settings.versions.scala,
        publish := {},
        publishLocal := {}
      )
    
    lazy val im = crossProject
      .in(file("."))
      .settings(
        libraryDependencies ++= Settings.sharedDependencies.value,
        addCompilerPlugin(
          "org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full),
        scalaVersion := Settings.versions.scala,
        name := "im",
        version := "0.1-SNAPSHOT"
      )
      .jvmSettings(
        libraryDependencies ++= Settings.jvmDependencies.value,
        mainClass in Test := Some("app.server.rest.TestHttpServerApp"),
        mainClass in Compile := Some("app.server.rest.TestHttpServerApp")
      )
      .jsSettings(
        mainClass in Compile := Some("app.client.Main"),
        libraryDependencies ++= Settings.scalajsDependencies.value,
        persistLauncher in Compile := true,
        persistLauncher in Test := false,
        jsDependencies += RuntimeDOM,
        scalaJSOptimizerOptions ~= { _.withDisableOptimizer(true) }
        )
    
    lazy val imJVM = im.jvm
    lazy val imJS = im.js
    
    persistLauncher in Compile := true
    
    persistLauncher in Test := false
    
    cancelable in Global := true
    

0 个答案:

没有答案