§SBT セッティングについて
§sbt セッティングについて
sbt ビルドスクリプトはプロジェクトの設定を定義します。sbt ドキュメント に記述されているように、プロジェクト独自のカスタム設定を定義することも可能です。特に sbt の セッティング について慣れる事は有効です。
基本的な設定を行うには、 :=
演算子を使います:
val main = PlayProject(appName, appVersion, appDependencies).settings(
confDirectory := "myConfFolder"
)
§Java アプリケーション向けのデフォルトセッティング
Play は Java ベースのアプリケーションに適したデフォルト設定のセットを定義しています。これらを有効にするには、アプリケーション定義に設定の defaultJavaSettings
セットを追加してください:
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA)
これらのデフォルト設定は、生成されるテンプレート向けに大部分のデフォルト import 文を定義します。例えば java.lang.*
をインポートするので、Long
のような型はデフォルトで Scala のものではなく Java のものになります。java.util.*
もインポートするので、デフォルトのコレクションライブラリは Java のものになります。
§Scala アプリケーション向けのデフォルトセッティング
Play は Scala ベースのアプリケーションに適したデフォルト設定のセットを定義しています。これらを有効にするには、アプリケーション定義に設定の defaultScalaSettings
セットを追加してください:
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA)
これらのデフォルト設定は、生成されるテンプレート向けにデフォルト import 文 (国際化メッセージや、主要な API) を定義します。
§デフォルト値の Play プロジェクトセッティング
Project
の代わりに PlayProject
を使って sbt プロジェクトを定義した場合、設定はデフォルト値のセットになります。以下がデフォルト設定です:
resolvers ++= Seq(
"Typesafe Releases Repository" at "http://repo.typesafe.com/typesafe/releases/",
"Typesafe Snapshots Repository" at "http://repo.typesafe.com/typesafe/snapshots/"
),
target <<= baseDirectory / "target",
sourceDirectory in Compile <<= baseDirectory / "app",
sourceDirectory in Test <<= baseDirectory / "test",
confDirectory <<= baseDirectory / "conf",
resourceDirectory in Compile <<= baseDirectory / "conf",
scalaSource in Compile <<= baseDirectory / "app",
scalaSource in Test <<= baseDirectory / "test",
javaSource in Compile <<= baseDirectory / "app",
javaSource in Test <<= baseDirectory / "test",
distDirectory <<= baseDirectory / "dist",
libraryDependencies += "play" %% "play" % play.core.PlayVersion.current,
libraryDependencies += "play" %% "play-test" % play.core.PlayVersion.current % "test",
parallelExecution in Test := false,
testOptions in Test += Tests.Setup { loader =>
loader.loadClass("play.api.Logger").getMethod("init", classOf[java.io.File]).invoke(null, new java.io.File("."))
},
testOptions in Test += Tests.Cleanup { loader =>
loader.loadClass("play.api.Logger").getMethod("shutdown").invoke(null)
},
testOptions in Test += Tests.Argument("sequential", "true"),
testOptions in Test += Tests.Argument("junitxml", "console"),
testListeners <<= (target, streams).map((t, s) => Seq(new eu.henkelmann.sbt.JUnitXmlTestsListener(t.getAbsolutePath, s.log))),
testResultReporter <<= testResultReporterTask,
testResultReporterReset <<= testResultReporterResetTask,
sourceGenerators in Compile <+= (confDirectory, sourceManaged in Compile, routesImport) map RouteFiles,
// Adds config/routes to continious triggers
watchSources <+= confDirectory map { _ / "routes" },
sourceGenerators in Compile <+= (sourceDirectory in Compile, sourceManaged in Compile, templatesTypes, templatesImport) map ScalaTemplates,
// Adds views template to continious triggers
watchSources <++= baseDirectory map { path => ((path / "app") ** "*.scala.*").get },
commands ++= Seq(shCommand, playCommand, playRunCommand, playStartCommand, h2Command, classpathCommand, licenseCommand, computeDependenciesCommand),
shellPrompt := playPrompt,
copyResources in Compile <<= (copyResources in Compile, playCopyAssets) map { (r, pr) => r ++ pr },
mainClass in (Compile, run) := Some(classOf[play.core.server.NettyServer].getName),
compile in (Compile) <<= PostCompile,
dist <<= distTask,
computeDependencies <<= computeDependenciesTask,
playVersion := play.core.PlayVersion.current,
playCommonClassloader <<= playCommonClassloaderTask,
playCopyAssets <<= playCopyAssetsTask,
playCompileEverything <<= playCompileEverythingTask,
playPackageEverything <<= playPackageEverythingTask,
playReload <<= playReloadTask,
playStage <<= playStageTask,
cleanFiles <+= distDirectory,
ebeanEnabled := false,
logManager <<= extraLoggers(PlayLogManager.default),
ivyLoggingLevel := UpdateLogging.DownloadOnly,
routesImport := Seq.empty[String],
playIntellij <<= playIntellijTask,
playHash <<= playHashTask,
// Assets
playAssetsDirectories := Seq.empty[File],
playAssetsDirectories <+= baseDirectory / "public",
resourceGenerators in Compile <+= LessCompiler,
resourceGenerators in Compile <+= CoffeescriptCompiler,
resourceGenerators in Compile <+= JavascriptCompiler,
lessEntryPoints <<= (sourceDirectory in Compile)(base => ((base / "assets" ** "*.less") --- base / "assets" ** "_*")),
coffeescriptEntryPoints <<= (sourceDirectory in Compile)(base => base / "assets" ** "*.coffee"),
javascriptEntryPoints <<= (sourceDirectory in Compile)(base => ((base / "assets" ** "*.js") --- (base / "assets" ** "_*"))),
lessOptions := Seq.empty[String],
coffeescriptOptions := Seq.empty[String],
closureCompilerOptions := Seq.empty[String],
// Templates
templatesImport := Seq("play.api.templates._", "play.api.templates.PlayMagic._"),
templatesTypes := {
case "html" => ("play.api.templates.Html", "play.api.templates.HtmlFormat")
case "txt" => ("play.api.templates.Txt", "play.api.templates.TxtFormat")
case "xml" => ("play.api.templates.Xml", "play.api.templates.XmlFormat")
})
Next: ライブラリの依存性管理
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。