如何在Play Framework中创建子项目?(播放#play-java_2.9.2; 2.1-RC3:未找到)

adi*_*dis 8 playframework-2.0 playframework-2.1

我想测试子项目是如何工作的,特别是如何routes在主项目中考虑子项目(之前不可见).

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

我做了什么:(下载后播放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)

}
Run Code Online (Sandbox Code Playgroud)

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

play run
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[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
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

adi*_*dis 12

终于搞定了:

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

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

application.router=subProject.Routes
Run Code Online (Sandbox Code Playgroud)

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

->  /subProject               subProject.Routes
Run Code Online (Sandbox Code Playgroud)

主项目的构建文件应该类似于:示例来自SCALA但是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)

}
Run Code Online (Sandbox Code Playgroud)