使用javaCore在Play2 Eclipse项目中包含Scala和Java Nature

时间:2013-03-01 14:51:29

标签: eclipse scala sbt playframework-2.1

我有一个sbt play2项目,我想为eclipse配置,自动包含Scala性质和Java性质(在生成的.project文件中)。我可以通过手动添加自然来在eclipse中执行此操作,但我希望eclipse插件能够自动为我执行此操作。

插件的默认行为是添加两个性质 UNLESS 在appDependencies中包含javaCore,我需要这样做。当您包含javaCore时,mainLang会自动设置为JAVA,并且配置中会排除Scala Nature。

请参阅构建文件更改下的https://github.com/playframework/Play20/wiki/Migration

有没有办法覆盖mainLang并将其设置为Scala?或者还有另一种方法可以将Scala Nature与Java Nature一起包括在内吗?

import sbt._
import Keys._
import play.Project._

object ApplicationBuild extends Build {

  val appName         = "SampleApp"
  val appVersion      = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    javaCore, javaJdbc, javaEbean
  )

  val main = play.Project(appName, appVersion, appDependencies).settings(
    // Want to set mainLang = SCALA here, but don't know how
  )
}

我将sbt用于所有内容,因此播放命令不受限制(以避免其他系统依赖性)

编辑:我正在使用play-sbt 2.1.0,Scala 2.10.1-RC1和sbt 0.12.2

1 个答案:

答案 0 :(得分:2)

通过查看Play sbt-eclipse源代码(herehere),我设法使用以下Build.scala文件使其工作:

import sbt._
import Keys._
import play.Project._

object ApplicationBuild extends Build {

  val appName         = "SampleApp"
  val appVersion      = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    javaCore, javaJdbc, javaEbean
  )

  import com.typesafe.sbteclipse.core._
  import com.typesafe.sbteclipse.core.EclipsePlugin._
  import scala.xml.transform.RewriteRule

  val main = play.Project(appName, appVersion, appDependencies).settings(
    EclipseKeys.projectFlavor := EclipseProjectFlavor.Scala,
    EclipseKeys.projectTransformerFactories := Seq[EclipseTransformerFactory[RewriteRule]]()
  )
}

不要忘记3次进口。

应该有更好的方法直接使用eclipseCommandSettings("SCALA"),但我没有找到它。