1

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

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

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

我无法将这些项目设置为像这里描述的子项目http://www.playframework.org/documentation/2.0/SBTSubProjects因为存在循环依赖。视图使用 Asset.of 需要定义路由文件。但是网站和目录都定义了一个路由文件,而 Play 2.0 不支持来自依赖项的路由文件(这应该在 Play 2.1 中出现)。在目录中,视图在控制器中被引用。

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

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

4

1 回答 1

0

我使用 play new 创建了两个项目。LDAPInterface 是我们希望在多个应用程序中使用的 LDAP 接口。第二个项目是访问管理器。在 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)
}
于 2013-04-02T14:42:10.430 回答