1

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

该插件的默认行为是添加这两种性质,除非您在 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

4

1 回答 1

2

通过查看 Play sbt-eclipse 源代码(此处此处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")但我没有找到。

于 2013-03-02T14:14:31.273 回答