自定义SBT构建文件以不在Play 2.0中编译视图

时间:2012-08-30 00:32:55

标签: scala playframework playframework-2.0 sbt

我有一个Play 1.2.4应用,我正在尝试迁移到Play 2.0.2。我目前在Play 1.2.4中有一个像这样的结构:

网站取决于前端 目录取决于前端 前端依赖于(编译视图时定义的路径文件)

前端包含一系列网站和目录使用的视图。做出这个决定是因为Catalog非常轻量级,用于快速开发Frontend。虽然网站中包含更多代码,但编码/编译/测试需要更长时间。

我无法将这些项目设置为子项目,例如此处http://www.playframework.org/documentation/2.0/SBTSubProjects,因为存在循环依赖关系。视图使用Asset.of,它需要定义routes文件。但是网站和目录都定义了路由文件,Play 2.0不支持来自依赖项的路由文件(这应该在Play 2.1中提供)。在目录中,视图在控制器中被引用。

我在想,如果我可以更改前端的构建逻辑而不尝试编译视图,而只是发布包含它们的工件,那么我可以让网站和目录将这些工件添加到它定义的视图中并构建它们一起。这会破坏我的循环依赖。

之前还有其他人这样做过吗?我是SBT的初学者,甚至不知道这是否可行。谁能告诉我如何修改Build.scala文件以停止编译视图但导出它们呢?让我成为SBT插件对我有意义吗?如果您知道任何显示如何执行此操作的代码,您可以发布指向代码的链接吗?

1 个答案:

答案 0 :(得分:0)

我用play new创建了两个项目。 LDAPInterface是我们想要在多个应用程序中使用的LDAP接口。第二个项目是Access manger。在AccessManager \ project \ build.scala文件中,我们以这种方式构造它以便使用LDAPInterface项目。在eclipse中,我们只是将LDAPInterface包含在项目依赖项部分中,以便我们进行调试。你总是可以编译一个jar文件并包含它,但是......如果你想深入了解eclipse中的项目依赖项,那就不太好了。如果我们使用play.Project它将其识别为一个Web项目。如果我们刚刚使用Project,它似乎认为它是一个控制台应用程序。

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

object LDAPInterface {
  lazy val depProject = RootProject(file("../LDAPInterface"))
}

object ApplicationBuild extends Build {

  val appName         = "AccessManager"
  val appVersion      = "1.0-SNAPSHOT"

  val appDependencies = Seq(
     //Add your project dependencies here,
    javaCore,
    javaJdbc,
    javaEbean 
  )

   //   lazy val root = Project(id = "AccessManager",
    //  base = file(".")
    //).dependsOn(LDAPInterface.depProject)



  lazy val main = play.Project(appName, appVersion, appDependencies).settings(
   //  Add your own project settings here      
  ).dependsOn(LDAPInterface.depProject)
}