ここではsbt .13を使用しています。
私はこれをこれまでに持っています:
import sbt._
import Keys._
import play.Project._
object ApplicationBuild extends Build {
val appVersion = "1.0"
resolvers += "local maven" at "/Users/blankman/.m2/repository/"
val commonDependencies = Seq()
val modelDependencies = Seq(
"com.typesafe.slick" %% "slick" % "2.0.1",
"org.slf4j" % "slf4j-nop" % "1.6.4"
)
val serviceDependencies = Seq(
"com.typesafe.slick" %% "slick" % "2.0.1",
"org.slf4j" % "slf4j-nop" % "1.6.4"
)
val webDependencies = Seq(
//"org.Apache.Tomcat" % "Tomcat-jdbc" % "8.0.3",
"mysql" % "mysql-connector-Java" % "5.1.30",
"com.typesafe.slick" %% "slick" % "2.0.1"
)
lazy val common = Project(
id = "app-common",
base = file("app-common"),
dependencies = commonDependencies
)
lazy val models = Project(
id = "app-models",
base = file("app-models"),
settings(modelDependencies: _*)
)
).dependsOn(common)
lazy val services = Project(
id = "app-services",
base = file("app-services"),
settings = Seq(
libraryDependencies ++= serviceDependencies
)
).dependsOn(models, common)
lazy val web = play.Project("app-web", appVersion, webDependencies,
path = file("app-web"))
.settings(playScalaSettings: _*)
.dependsOn(services)
}
これは機能しません。たとえば、私が入ると:
プロジェクトアプリモデル
コンパイルしてみると、コンパイルが有効ではないかと言われています。
プロジェクトの設定方法が本当に困惑しています。正しい方法は何ですか?
このスライド#10をここで見てみましょう http://jsuereth.com/scala/2013/06/11/effective-sbt.html できると言っています:
lazy val web = (
Project("app-models", file("app-models"))
settings(
libraryDependencies += modelDependencies
)
)
しかし、これを行うと、エラーも発生します。
私は基本的にsbtの中にいくつかのプロジェクトを持っています:
common
models
services
web (which is play)
誰かがこれを機能させるのを手伝ってくれる?
ビルド定義でいくつかの問題が見つかりましたが、Joshの Effective sbt の話を買ったので、スタイルに専念する必要があると思います。
ここにファイルがあります。
_sbt.version=0.13.2
_
_val playVersion = "2.2.2"
resolvers += Resolver.typesafeRepo("releases")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % playVersion)
_
_import sbt._
import Keys._
object Commons {
val appVersion = "1.0"
val settings: Seq[Def.Setting[_]] = Seq(
version := appVersion,
resolvers += Opts.resolver.mavenLocalFile
)
}
_
_import sbt._
import Keys._
object Dependencies {
val slickVersion = "2.0.1"
val slick = "com.typesafe.slick" %% "slick" % slickVersion
val slf4jVersion = "1.6.4"
val slf4jNop = "org.slf4j" % "slf4j-nop" % slf4jVersion
val mysqlConnectorVersion = "5.1.30"
val mysqlConnector = "mysql" % "mysql-connector-Java" % mysqlConnectorVersion
val commonDependencies: Seq[ModuleID] = Seq(
slick,
slf4jNop
)
val modelDependencies: Seq[ModuleID] = Seq()
val serviceDependencies: Seq[ModuleID] = Seq()
val webDependencies: Seq[ModuleID] = Seq(
mysqlConnector
)
}
_
_import play.Project._
import Dependencies._
lazy val appCommon = (project in file("app-common")).
settings(Commons.settings: _*).
settings(
libraryDependencies ++= commonDependencies
)
lazy val appModels = (project in file("app-models")).
settings(Commons.settings: _*).
settings(
libraryDependencies ++= modelDependencies
).
dependsOn(appCommon)
lazy val appServices = (project in file("app-services")).
settings(Commons.settings: _*).
settings(
libraryDependencies ++= serviceDependencies
).
dependsOn(appModels, appCommon)
lazy val appWeb = (project in file("app-web")).
settings(Commons.settings: _*).
settings(playScalaSettings: _*).
dependsOn(appServices)
_
models
とservices
の場合、設定シーケンスをProject(...)
コンストラクターに渡しているため、デフォルト設定が読み込まれていない可能性があります。デフォルト設定を手動で渡すか、Project
でsettings(...)
メソッドを使用することができます。
_lazy val appModels = (project in file("app-models")).
settings(
libraryDependencies ++= modelDependencies
).
dependsOn(appCommon)
_
Joshは括弧を使用した後置表記法を使用していますが、これにはドット表記法を使用することをお勧めします。そのため、話とは少し異なります。
上記の例のように、modelDependencies
をlibraryDependencies
に渡す必要があります。 settings
を直接呼び出すようにしました。
resolvers
設定は何にも渡されません。これはおそらく正しくありません。