【问题标题】:How to create sub projects in Play Framework? (play#play-java_2.9.2;2.1-RC3: not found)如何在 Play Framework 中创建子项目? (播放#play-java_2.9.2;2.1-RC3:未找到)
【发布时间】:2013-01-29 15:53:24
【问题描述】:

我想测试子项目是如何工作的,尤其是子项目的routes在主项目(this was not visible before)中是如何考虑的。

我已阅读此处的文档: 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,但我一直收到此错误。

我做错了什么?

【问题讨论】:

  • 你能写出你项目的结构吗?我所做的与链接SBTSunProjects 中描述的完全相同。但我收到了上面列出的错误。
  • 这个周末我将尝试为 Scala 和 Java 做这件事。

标签: playframework-2.0 playframework-2.1


【解决方案1】:

终于搞定了:

  • 您不必从子项目中删除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)

}

【讨论】:

  • 谢谢阿迪斯!就我而言,它在subProject.Routes(在routes 文件中)中找不到subProject“包”。我不知道我做错了什么。
  • @FerranMaylinch 听起来像是我的控制器未在“控制器”中声明时的情况。命名空间。看来他们必须是。
【解决方案2】:

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

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

示例取自this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2017-12-12
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多