/documentation/manual/detailledTopics/build/SBTSettings.md
Markdown | 168 lines | 100 code | 68 blank | 0 comment | 0 complexity | 99a22fe73f921c95a1ead043a0c512ed MD5 | raw file
- # About SBT Settings
- ## About sbt settings
- The sbt build script defines settings for your project. You can also define your own custom settings for your project, as described in the [sbt documentation](http://www.scala-sbt.org). In particular, it helps to be familiar with the [settings](http://www.scala-sbt.org/release/docs/Getting-Started/More-About-Settings) in sbt.
- To set a basic setting, use the `:=` operator:
- ```scala
- val main = play.Project(appName, appVersion, appDependencies).settings(
- confDirectory := "myConfFolder"
- )
- ```
- ## Default settings for Java applications
- Play defines a default set of settings suitable for Java-based applications. To enable them add the `defaultJavaSettings` set of settings to your application definition:
- ```scala
- val main = play.Project(appName, appVersion, appDependencies, mainLang = JAVA)
- ```
- These default settings mostly define the default imports for generated templates. For example, it imports `java.lang.*`, so types like `Long` are the Java ones by default instead of the Scala ones. It also imports `java.util.*` so the default collection library will be the Java one.
- ## Default settings for Scala applications
- Play defines a default set of settings suitable for Scala-based applications. To enable them add the `defaultScalaSettings` set of settings to your application definition:
- ```scala
- val main = play.Project(appName, appVersion, appDependencies, mainLang = SCALA)
- ```
- These default settings define the default imports for generated templates (such as internationalized messages, and core APIs).
- ## Play project settings with their default value
- When you define your sbt project using `play.Project` instead of `Project`, you will get a default set of settings. Here is the default configuration:
- ```scala
- 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:** [[Managing library dependencies | SBTDependencies]]