由于您使用的是 IntelliJ 13,因此您可以访问内置的 SBT 导入;不幸的是,这不能在现有项目上完成。但是,您可以从 SBT 构建文件导入项目,然后从 .idea 文件夹迁移任何项目设置(假设您使用的是基于目录的项目)。
话虽如此,听起来您也可以在设置 Build.scala 时使用一些说明,所以让我们深入研究一下。
示例 Play2 配置:
我将继续假设您已经使用play new创建了两个 Play 项目。
我们想像这样设置项目:
- 客户PlayProject
- AdminPlayProject
- 共享库
- 项目
假设这样的布局,下面是一个 Build.scala 的示例:
import play.Project._
import sbt._
import sbt.Keys._
object BuildSettings {
val appOrganization = "com.example"
val appVersion = "0.0.1-SNAPSHOT"
val commonResolvers = Seq(
// Your common resolvers here
)
val commonSettings = Seq(
organization := appOrganization,
// Other shared settings
resolvers ++= commonResolvers
)
val commonDeps = Seq(
// Shared Dependencies for all 3 projects here.
)
val adminDeps = Seq(
// Admin dependencies
) ++ commonDeps
val clientDeps = Seq(
// Client Dependencies
) ++ commonDeps
val libraryDeps = Seq(
// Library Deps
) ++ commonDeps
}
object Build extends Build {
import BuildSettings._
lazy val LibraryProject = Project("SharedLibrary", file("SharedLibrary"))
.settings(commonSettings: _*)
.settings(libraryDependencies ++= libraryDeps)
lazy val AdminProject = play.Project("AdminPlayProject", appVersion, adminDeps, path = file("AdminPlayProject"))
.settings(commonSettings: _*)
.settings(libraryDependencies ++= adminDeps)
.dependsOn(LibraryProject)
lazy val ClientProject = play.Project("ClientPlayProject", appVersion, clientDeps, path = file("ClientPlayProject"))
.settings(commonSettings: _*)
.dependsOn(LibraryProject)
lazy val aggregatedProjects = Seq[ProjectReference](
LibraryProject,
AdminProject,
ClientProject
)
lazy val root = Project("Root", file("."))
.settings(commonSettings: _*)
.aggregate(aggregatedProjects: _*)
}
一旦您将 Build.scala 全部整理好,只需在 IntelliJ 中执行 Import Project 步骤,它就会让您的代码完成全部整理好,一切顺利。
请注意,您可能希望将其中的一部分分解为其他 .scala 文件并导入它们;也许是一个 Dependencies 对象、一个 Resolvers 对象等。它实际上取决于复杂程度。