2015-08-03 2 views
0

У меня есть простой проект с двумя подмодулями, proja и projb. Proja содержит свойство UserController, используемое в UserControllerImpl внутри projb.SBT 0.13.8 проект с несколькими модулями с Playframework 2.4.2

проект на GitHub: https://github.com/aswarcewicz/play-sbt-multimodule

корень build.sbt:

name := """proj""" 

version := "1.0-SNAPSHOT" 

lazy val proja = Project(id = "proj-a", base = file("modules/proj-a")) 
    .enablePlugins(PlayScala) 

lazy val projb = Project(id = "proj-b", base = file("modules/proj-b")) 
    .enablePlugins(PlayScala) 
    .dependsOn(proja) 
    .aggregate(proja) 

lazy val root = Project(id = "proj", base = file(".")) 
    .enablePlugins(PlayScala) 
    .dependsOn(proja, projb) 
    .aggregate(proja, projb) 

scalaVersion := "2.11.6" 

libraryDependencies ++= Seq(
) 

// Play provides two styles of routers, one expects its actions to be injected, the 
// other, legacy style, accesses its actions statically. 
routesGenerator := InjectedRoutesGenerator 

и ошибок от компилятора:

модулей/проектируемый-B/приложение/контроллеры/UserControllerImpl.scala: 5: не найдено: объект контроллер [ошибка] импорт контроллер._

/modu ле/проектируемый-B/приложение/контроллеры/UserControllerImpl.scala: 10: не найдено: Тип UserController [ошибка] Класс UserControllerImpl расширяет контроллер с UserController {

Я понятия не имею, что может быть не так.

ответ

0

Вы должны изменить файл SBT на:

name := """proj""" 

version := "1.0-SNAPSHOT" 

lazy val root = Project(id = "proj", base = file(".")) 
    .enablePlugins(PlayScala) 
    .aggregate(proja, projb) 

lazy val proja = Project(id = "proj-a", base = file("modules/proj-a")) 
    .enablePlugins(PlayScala) 

lazy val projb = Project(id = "proj-b", base = file("modules/proj-b")) 
    .enablePlugins(PlayScala) 
    .dependsOn(proja) 

scalaVersion := "2.11.6" 

libraryDependencies ++= Seq(
) 

// Play provides two styles of routers, one expects its actions to be injected, the 
// other, legacy style, accesses its actions statically. 
routesGenerator := InjectedRoutesGenerator 

Добавить правильные зависимости и перезагрузить проект.

+0

Пробовали ли вы его на проекте из GitHub? Потому что это не работает. – user2860204

+0

Ваш SBT-файл был синтаксически неправильным, теперь вы можете добавить зависимую вы хотите – Omid

+0

, и вам больше не нужен файл sbt для каждого проекта – Omid

0

Вы хотите определить модуль CommonSettings и пройти через везде:

import sbt.Keys._ 

lazy val commonSettings = Seq(
    scalaVersion := "2.11.7", 
    routesGenerator := InjectedRoutesGenerator, 
    version := "1.0-SNAPSHOT" 
) 

lazy val root = (project in file(".")) 
    .enablePlugins(PlayScala) 
    .settings(commonSettings) 
    .settings(Seq(name := """proj""")) 
    .dependsOn(`proj-a`, `proj-b`) 
    .aggregate(`proj-a`, `proj-b`) 

lazy val `proj-b` = (project in file("modules/proj-b")) 
    .enablePlugins(PlayScala) 
    .settings(commonSettings) 
    .dependsOn(`proj-a`).aggregate(`proj-a`) 

lazy val `proj-a` = (project in file("modules/proj-a")) 
    .enablePlugins(PlayScala) 
    .settings(commonSettings) 
Смежные вопросы