2015-07-10 53 views
1

我以前使用sbt-eclipse来成功导入一个简单的sbt项目到eclipse中。我现在试图利用sbt的CrossProject机制来使用Scala-JS环境(在sbt中创建两个子项目 - 一个用于Javascript,一个用于JVM代码)。建议(see SBT docs link here)是在build.sbt文件中添加设置'EclipseKeys.useProjectId:= true',以支持将2个项目导入到一个eclipse项目中。然后在运行的SBT会话中给出'eclipse'命令来创建我的eclipse项目,然后启动eclipse并尝试导入这个新项目。当我这样做时,eclipse中的导入对话框向导确实向我展示了两个子项目,但是当我尝试完成导入时,eclipse抱怨项目已经存在,并且在我的eclipse项目中看到两个奇怪的链接没有。如何使用sbt-eclipse成功导入CrossProject sbt内建到eclipse中

将CrossProject构建到eclipse中的正确过程是什么?

+0

你可以在清洁你的sbt build和eclipse之后再试一次吗?如果这确实不起作用,那就是一个问题。 – gzm0

+0

当我这样做时,导入时会收到错误消息“/ SJSTut already exists”。我错过了什么吗? – bjenkins001

+0

看来你的sbt没有选择'useProjectId'设置(如果你没有添加它,错误是预期的)。你重新加载了吗? – gzm0

回答

0

好了,看来日食不喜欢我了,这是在build.sbt我有这样的共享设置区域项目只有一个“姓名”:

lazy val sp = crossProject.in(file(".")). 
settings(
    version := "0.1", 
    name := "SJSTut", 
    scalaVersion := "2.11.7" 
). 
jvmSettings(
    // Add JVM-specific settings here 
    libraryDependencies ++= Seq(...) 
). 
jsSettings(
    // Add JS-specific settings here 
    libraryDependencies ++= Seq(...) 
) 

和我应该做的是这样的:

lazy val sp = crossProject.in(file(".")). 
settings(
    version := "0.1", 
    scalaVersion := "2.11.7" 
). 
jvmSettings(
    // Add JVM-specific settings here 
    name := "SJSTutJVM", 
    libraryDependencies ++= Seq(...) 
). 
jsSettings(
    // Add JS-specific settings here 
    name := "SJSTutJS", 
    libraryDependencies ++= Seq(...) 
) 

注意从设置去除“名称”分配的,而是,展示位置进入jvmSettings和jsSettings面积唯一不同的名称两者。

现在我可以把它拉到eclipse中(作为2个独立的项目)。如果其他人有更好的设置,我很乐意听到它。

+1

这样做的问题是,由于您现在有不同的名称,项目将在不同的工件名称下发布。 – gzm0