project/CommonSettings.scala (33 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* license agreements; and to You under the Apache License, version 2.0:
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* This file is part of the Apache Pekko project, which was derived from Akka.
*/
import com.lightbend.paradox.projectinfo.ParadoxProjectInfoPlugin.autoImport.projectInfoVersion
import org.mdedetrich.apache.sonatype.ApacheSonatypePlugin
import sbt.Keys._
import sbt.{ AutoPlugin, Compile, CrossVersion, Global, Test, TestFrameworks, Tests }
import sbt.plugins.JvmPlugin
import sbtdynver.DynVerPlugin
import sbtdynver.DynVerPlugin.autoImport.dynverSonatypeSnapshots
object CommonSettings extends AutoPlugin {
override def trigger = allRequirements
override def requires = JvmPlugin && ApacheSonatypePlugin && DynVerPlugin
override lazy val projectSettings = Seq(
crossScalaVersions := Seq(Dependencies.Scala212, Dependencies.Scala213),
scalaVersion := Dependencies.Scala213,
crossVersion := CrossVersion.binary,
// Setting javac options in common allows IntelliJ IDEA to import them automatically
Compile / javacOptions ++= Seq("-encoding", "UTF-8", "-source", "1.8", "-target", "1.8"),
Test / logBuffered := false,
Test / parallelExecution := false,
// show full stack traces and test case durations
Test / testOptions += Tests.Argument("-oDF"),
// -v Log "test run started" / "test started" / "test run finished" events on log level "info" instead of "debug".
// -a Show stack traces and exception class name for AssertionErrors.
testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-a"),
Test / fork := true, // some non-heap memory is leaking
Test / javaOptions ++= {
import scala.collection.JavaConverters._
// include all passed -Dpekko. properties to the javaOptions for forked tests
// useful to switch DB dialects for example
val pekkoProperties = System.getProperties.stringPropertyNames.asScala.toList.collect {
case key: String if key.startsWith("pekko.") => "-D" + key + "=" + System.getProperty(key)
}
"-Xms1G" :: "-Xmx1G" :: "-XX:MaxDirectMemorySize=256M" :: pekkoProperties
},
projectInfoVersion := (if (isSnapshot.value) "snapshot" else version.value))
override lazy val globalSettings = Seq(
Global / excludeLintKeys += projectInfoVersion)
override lazy val buildSettings = Seq(
dynverSonatypeSnapshots := true)
}