2014-10-03 7 views
1

совершенно новый с платформой Play, но я попытался настроить подпроект для моего основного проекта, но когда я попытался перенаправить маршрут из основного проекта в подпроект, он не смог распознать переменную подпроекта. Я следовал на основе документации здесь PlaySubProjectPlay Framework 2.3.4 перенаправление маршрутов в подпроект

Моя основная структура проекта является, как показано ниже:

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 
) 

и мой подпроект сборки. sbt выглядит следующим образом:

name := """Subproject""" 

version := "1.0-SNAPSHOT" 

scalaVersion := "2.11.1" 

libraryDependencies ++= Seq(
    javaJdbc, 
    javaEbean, 
    cache, 
    javaWs 
) 

Наконец, это мой главный r файл outes.

# 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 

Проблема в этом файле маршруты, он не может даже распознать суб переменного на последнюю строку в . Как решить эту проблему?

ответ

0

Я не уверен в вашей конкретной проблеме, но я настраиваю полностью рабочий и достаточно хорошо документированный многопроектный пример на https://github.com/josh-padnick/play-multiproject-template. Это основано на Play 2.2.3 (не 2.3.x), но оно должно быть очень близко к тому, что вам нужно.

+0

ну, это действительно глупо , Я полагал, что моя проблема связана не с Play Framework, а с путаницей с красной подсветкой Intellij IDEA на sub.Routes. С вашим шаблоном я понял, что это так. Я запускаю проект, и он работает отлично. Я просто должен игнорировать красный текст, выделенный IntelliJ в этой части. Спасибо, кстати. –

+0

Рад, что это помогло! –

1

У меня была такая же проблема (хотя структура проекта была такой же, как и во всех примерах, а документация и файлы маршрутов находились в правильных местах) - файл маршрутов подпроектов не был помещен в главную цель/scala-2.11/маршруты и не может быть найти

Я решил, добавив unmanagedResourceDirectories in Compile += baseDirectory.value/"<path_to_project>/conf в конце build.sbt:

.... 
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, чтобы добавить файлы в подпроекта каталоге конф должны быть включены в основной класс класса проекта

Смежные вопросы