Включите Scala и Java Nature в проект Play2 Eclipse с помощью javaCore

У меня есть проект sbt play2, который я хочу настроить для eclipse, чтобы автоматически включать как природу Scala, так и природу Java (в сгенерированный файл .project). Я могу сделать это внутри eclipse, вручную добавив природу, но я хочу, чтобы плагин eclipse делал это автоматически.

Поведение подключаемого модуля по умолчанию состоит в том, чтобы добавить обе природы, ЕСЛИ вы не включите javaCore в свои appDependencies, что мне и нужно сделать. Когда вы включаете 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.


person Tommy Adamski    schedule 01.03.2013    source источник


Ответы (1)


Взглянув на исходный код 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"), но я его не нашел.

person ndeverge    schedule 02.03.2013
comment
Это помогло! Спасибо за ваше время! Я пытался просмотреть исходники, но не смог взломать код, рад, что вы смогли :) - person Tommy Adamski; 04.03.2013