2013-09-26 4 views
0

У меня есть проект Play 2.2 и я использую IntelliJ 12. Я сгенерировал файлы проекта, выполнив play idea из командной строки. (Плагин play2 настолько беден, что я должен делать это каждый раз, когда меняю зависимость, что довольно примечательно, учитывая, что я заплатил за «конечную» поддержку Play). В любом случае, теперь вопрос заключается в том, что я хочу иметь больше модульности по мере роста проекта. Я хочу иметь несколько проектов, которые компилируются в банки. (Я делаю это отчасти из-за того, что время компиляции scala делает TDD мучительным.)Несколько проектов с использованием Play и IntelliJ

В eclipse я просто создаю рабочее пространство, а затем сделаю все эти проекты зависящими от проекта pom. Если я сделаю то же самое здесь, как я собираюсь получить intellij файлы проекта для проекта игры? Он будет генерировать их только в каталоге проекта игры.

ответ

1

У меня есть Play 2.2 проект, который я разделил на моей работе, вот что я сделал:

Структура папок:

Проект:

project1 
    --project/Build.scala 
    project2 
    --project/Build.scala 
    project3 
    --project/Build.scala 

project/Build.scala 

Вот как основной Build.scala выглядит следующим образом:

import sbt._ 
import Keys._ 

object ApplicationBuild extends Build { 

    val appName = "test" 
    val appVersion = "test-0.1" 
    val ScalaVersion = "2.10.2" 

    val appDependencies = Seq( 
) 

    lazy val project1 = RootProject(file("./project1/")) 

    lazy val project2 = RootProject(file("./project2/")) 

    lazy val project3 = RootProject(file("./project3/")) 

    lazy val mainProject = Project (
    id = "test", 
    base = file("."), 
    settings = Project.defaultSettings).settings( 
     scalaVersion := ScalaVersion, 
     name := appName, 
     version := appVersion, 
     resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/maven-releases/", 
     resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/", 
     resolvers += "Typesafe snapshots" at "http://repo.typesafe.com/typesafe/snapshots/", 
     resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", 
     libraryDependencies ++= appDependencies 

    ).aggregate(project1).aggregate(project2).aggregate(project3) 

} 

Это будет средний файл сборки sbt, который построит весь ваш подпроект s.

Вот как Build.scala файл project2 выглядит как (в данном случае это проект Play)

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

object ApplicationBuild extends Build { 

    val appName = "project2" 
    val appVersion = "1.0" 



    val appDependencies = Seq(
    jdbc  
) 


    lazy val project1 = RootProject(file("../project1")) 

    lazy val main = play.Project(appName, appVersion, appDependencies).settings(
    scalaVersion := "2.10.2", 
    resolvers += Resolver.url("typesafe", url("http://repo.typesafe.com/typesafe/releases/")), 
    resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" 
).dependsOn(project1) 

} 

В основном project2 зависит от кода project1 в.

Я бы тогда отредактировать главный проект/plugins.sbt файл и добавьте СБТ Plugin инструкции здесь: https://github.com/mpeltonen/sbt-idea (я использую версию снимка)

Затем генерировать проект IntelliJ с помощью команды генераторной идеи.

Смежные вопросы