common
クライアント、サービス、ユーティリティなどを処理するライブラリを使用して構築したい play プロジェクトがあります...
私のディレクトリ構造は次のようになります:
.
├── build.sbt
├── myapp
│ ├── app
│ │ ├── controllers
│ │ │ └── HomeController.scala
│ │ └── views
│ │ ├── index.scala.html
│ │ └── main.scala.html
│ ├── conf
│ │ ├── application.conf
│ │ ├── logback.xml
│ │ ├── messages
│ │ └── routes
│ ├── public
│ │ ├── images
│ │ │ └── favicon.png
│ │ ├── javascripts
│ │ │ └── main.js
│ │ └── stylesheets
│ │ └── main.css
│ └── test
│ └── controllers
│ └── HomeControllerSpec.scala
├── myapp-common
│ └── src
│ └── main
│ └── TesterObject.scala
└── project
├── build.properties
├── plugins.sbt
└── scaffold.sbt
私の build.sbt は次のように構成されています。
lazy val commonSettings = Seq(
version := "1.0-SNAPSHOT",
scalaVersion := "2.12.3"
)
lazy val root = (project in file("."))
.settings(commonSettings)
.aggregate(myapp, `myapp-common`)
.dependsOn(myapp, `myapp-common`)
lazy val `myapp-common` = project
.settings(commonSettings)
lazy val myapp = project
.enablePlugins(PlayScala)
.settings(commonSettings)
.settings(libraryDependencies += guice)
.settings(libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.2" % Test)
.dependsOn(`myapp-common`)
で play プロジェクトを正常に実行できsbt myapp/run
ますが、で定義されたパッケージをインポートしようとすると失敗しますmyapp-common
。
たとえば、私が持っている場合myapp-common/src/main/TesterObject.scala
:
package tester
Object TesterObject {
val testMe = 3
}
import tester._
で使用しようとすると、パッケージが見つからないため、コンパイル中にプロジェクトが失敗しますTesterObject.testMe
。myapp/app/controllers/HomeController.scala
ここで誰かが私を正しい方向に向けることができますか? マルチプロジェクトに関する sbt ガイドは、この特定の問題を解析するのが少し難しいです。私の依存関係は適切に設定されているようです。