0

我有一个 Play 2.2 项目并且正在使用 IntelliJ 12。我通过play idea从命令行生成项目文件。(play2 插件太差了,我每次更改依赖项时都必须这样做,考虑到我支付了“终极”费用以获得 Play 支持,这非常了不起)。无论如何,现在的问题是随着项目的发展,我希望拥有更多的模块化。我想要几个编译成 jar 的项目。(我这样做的部分原因是 scala 编译时间使 TDD 难以忍受。)

在 Eclipse 中,我会简单地创建一个工作区,然后让这些项目都挂在 pom 项目中。如果我在这里做同样的事情,我将如何获取 play 项目的 intellij 项目文件?它只会在播放项目的目录中生成它们。

4

1 回答 1

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 构建文件。

下面是 project2 的 Build.scala 文件的样子(在本例中是 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 文件并在此处添加 sbt 插件说明:https ://github.com/mpeltonen/sbt-idea (我使用快照版本)

然后使用 gen-idea 命令生成 intellij 项目。

于 2013-09-26T18:45:36.903 回答