Java Play Framework 2.3.4将重定向路由到子项目

Java Play Framework 2.3.4将重定向路由到子项目,java,playframework,routes,playframework-2.3,subproject,Java,Playframework,Routes,Playframework 2.3,Subproject,Play framework非常新,但我尝试为我的主项目设置子项目,但当我尝试将路由从主项目重定向到子项目时,它无法识别子项目变量。我根据这里的文档进行了跟踪 我的主要项目结构如下所示: Main app conf application.conf routes modules sub app conf sub.routes build.sbt logs

Play framework非常新,但我尝试为我的主项目设置子项目,但当我尝试将路由从主项目重定向到子项目时,它无法识别子项目变量。我根据这里的文档进行了跟踪

我的主要项目结构如下所示:

Main
   app
   conf
      application.conf
      routes
   modules
      sub
         app
         conf
            sub.routes
         build.sbt
   logs
   project
   public
   target
   test
   activator
   activator-launch-1.2.10.jar
   build.sbt
这是我的主build.sbt文件:

name := """Main"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava).aggregate(sub).dependsOn(sub)

lazy val sub = (project in file("modules/sub")).enablePlugins(PlayJava)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs
)
我的子项目build.sbt如下:

name := """Subproject"""

version := "1.0-SNAPSHOT"

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs
)
最后,这是我的主路由文件

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET        /                    controllers.Application.index()

# Map static resources from the /public folder to the /assets URL path
GET        /assets/*file        controllers.Assets.at(path="/public", file)

# SUB's
->  /sub    sub.Routes

问题在于此routes文件中,它甚至无法识别位于
sub.routes
的最后一行上的子变量。如何解决这个问题?

我不确定您的具体问题,但我在网站上设置了一个完全有效且文档合理的多项目示例。这是基于Play 2.2.3(不是2.3.x),但它应该非常接近您的需要。

我也遇到了同样的问题(尽管项目结构与所有示例中一样,文档和路由文件位于正确的位置)-子项目路由文件未放置在主目标/scala-2.11/routes中,无法找到

我通过在build.sbt末尾的Compile+=baseDirectory.value/“/conf中添加
unmanagedResourceDirectory解决了这个问题:

....
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
  .settings(commonSettings: _*)
  .aggregate(core, providers, zms, api)
  .dependsOn(core, providers, zms, api)

lazy val core = (project in file("apps/core")).enablePlugins(PlayJava, PlayEbean)
  .settings(commonSettings: _*)
  .settings(
    name := "core"
  )

lazy val zms = (project in file("apps/zms")).enablePlugins(PlayJava, PlayEbean)
  .settings(commonSettings: _*)
  .settings(
    name := "zms"
  )
  .dependsOn(core)

lazy val api = (project in file("apps/api")).enablePlugins(PlayJava, PlayEbean)
  .settings(commonSettings: _*)
  .settings(
    name := "api"
  )
  .dependsOn(core)


//Here are the lines that solved the problem
unmanagedResourceDirectories in Compile += baseDirectory.value / "apps/core/conf"
unmanagedResourceDirectories in Compile += baseDirectory.value / "apps/zms/conf"
unmanagedResourceDirectories in Compile += baseDirectory.value / "apps/api/conf"

fork in Compile := true

它会说sbt在sub.project conf目录下添加文件以包含在主项目类路径中

嗯,这真的很愚蠢。我认为我的问题不在于Play框架,而是与Intellij IDEA在sub.Routes上的红色高亮显示混淆。对于您的模板,我认为情况就是这样。我运行了该项目,它可以正常工作不,我只需要忽略IntelliJ在这一部分突出显示的红色文本。顺便说一句,谢谢。