2013-03-01 42 views
1

我有一個sbt play2項目,我想要爲eclipse進行配置,以便自動(在生成的.project文件中)包含Scala自然和Java本質。我可以通過手動添加自然的方式在eclipse中完成此操作,但我希望eclipse插件自動爲我執行此操作。在Play2中包含Scala和Java自然項目使用javaCore編寫的項目

插件的默認行爲是添加這兩個性質除非您包括的javacore在appDependencies,這是我需要做的。當您包含javaCore時,mainLang會自動設置爲JAVA,並且配置中不包括Scala自然。

看:下更改構建文件

https://github.com/playframework/Play20/wiki/Migration有沒有辦法覆蓋mainLang並將其設置爲Scala呢?或者還有另外一種方法將Java Scala Nature包含在Java自然中?

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的一切,所以打命令關閉的限制(以避免額外的系統依賴性)

編輯:我使用的播放SBT 2.1.0,斯卡拉2.10.1-RC1,和SBT 0.12.2

回答

2

通過查看播放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")但我沒有找到它。

+0

這個竅門!謝謝你的時間!我試圖查看源代碼,但無法破解代碼,我很高興你可以:) – 2013-03-04 14:21:35