Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Created May 27, 2025 23:48
Show Gist options
  • Save xuwei-k/07122b36e4f326e7b04c5bc7a393a980 to your computer and use it in GitHub Desktop.
Save xuwei-k/07122b36e4f326e7b04c5bc7a393a980 to your computer and use it in GitHub Desktop.
import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport._
import com.typesafe.sbt.web.SbtWeb.autoImport._
import play.twirl.sbt.Import.TwirlKeys
import sbt.Keys._
import sbt._
import sbtprojectmatrix.ProjectMatrixPlugin
import sbtprojectmatrix.ProjectMatrixPlugin.autoImport.projectMatrixBaseDirectory
object PlayLayoutProjectMatrixPlugin extends AutoPlugin {
override def requires = play.sbt.PlayWeb && ProjectMatrixPlugin
override def trigger = allRequirements
override def projectSettings = Seq(
Compile / sourceDirectory := projectMatrixBaseDirectory.value.getAbsoluteFile / "app",
Test / sourceDirectory := projectMatrixBaseDirectory.value.getAbsoluteFile / "test",
Compile / resourceDirectory := projectMatrixBaseDirectory.value.getAbsoluteFile / "conf",
Compile / scalaSource := projectMatrixBaseDirectory.value.getAbsoluteFile / "app",
Test / scalaSource := projectMatrixBaseDirectory.value.getAbsoluteFile / "test",
Compile / javaSource := projectMatrixBaseDirectory.value.getAbsoluteFile / "app",
Test / javaSource := projectMatrixBaseDirectory.value.getAbsoluteFile / "test",
Compile / TwirlKeys.compileTemplates / sourceDirectories := Seq((Compile / sourceDirectory).value),
Test / TwirlKeys.compileTemplates / sourceDirectories := Seq((Test / sourceDirectory).value),
Assets / sourceDirectory := (Compile / sourceDirectory).value / "assets",
TestAssets / sourceDirectory := (Test / sourceDirectory).value / "assets",
Assets / resourceDirectory := projectMatrixBaseDirectory.value.getAbsoluteFile / "public",
Universal / sourceDirectory := projectMatrixBaseDirectory.value.getAbsoluteFile / "dist"
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment