8

我想测试子项目是如何工作的,尤其是routes在主项目中如何考虑子项目的(这在以前是不可见的)。

我在这里阅读了文档: https ://github.com/playframework/Play20/wiki/SBTSubProjects

我做了什么:(下载play 2.1 RC3后)

  1. 创建新的 Java 项目:play new MainProject
  2. 在 MainProject 中创建新文件夹:modules
  3. 创建新的 Java 项目:play new SubProject

在这两个项目上:play eclipse因为play eclipsify不再起作用

在主项目Build.scala文件中:

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

object ApplicationBuild extends Build {

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

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

  val subProject = Project("subproject", file("modules/SubProject"))

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

}

现在,在我运行的主项目中:

play run

我收到以下错误:

[error] (MainProject/*:update) sbt.ResolveException: unresolved dependency: play#play_2.9.2;2.1-RC3: not found
[error] unresolved dependency: play#play-java_2.9.2;2.1-RC3: not found
[error] unresolved dependency: play#play-java-jdbc_2.9.2;2.1-RC3: not found
[error] unresolved dependency: play#play-java-ebean_2.9.2;2.1-RC3: not found
[error] unresolved dependency: play#play-test_2.9.2;2.1-RC3: not found

注意 我试图Build.scala从子项目中删除,但我一直收到这个错误。

我究竟做错了什么?

4

2 回答 2

12

终于让它工作了:

  • 您不必Build.scala从子项目中删除 。

您需要重命名子项目的路由文件。在我的例子中,到subProject.routes. 如果您想单独运行您的子项目,您需要声明路由必须解析为您的 subProject.routes。所以在application.conf你的子项目中添加这个:

application.router=subProject.Routes

在您的主项目中,您需要从子项目中导入路由:

->  /subProject               subProject.Routes

主项目的构建文件应该类似于:example is from SCALA but s

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

object ApplicationBuild extends Build {

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

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

  val subProject = play.Project(
    appName + "-subProject", appVersion, path = file("modules/SubProject")
  )

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

}
于 2013-01-31T16:07:37.367 回答
0

我发现我必须将 scala 版本显式设置为 2.10.0,因为子项目导致与 2.9.2 冲突。

val main = play.Project(appName, appVersion, appDependencies).settings(
    scalaVersion := "2.10.0"
)

取自这个问题的例子。

于 2015-05-28T12:21:17.207 回答