project/BuildSettings.scala (59 lines of code) (raw):

import sbt.Def import sbt.* import sbt.Keys.* object BuildSettings { val compilerFlags: Seq[String] = Seq( "-deprecation", "-unchecked", "-Werror", "-feature", "-release", "17", ) lazy val checkLicenseHeaders = taskKey[Unit]("Check the license headers for all source files.") lazy val formatLicenseHeaders = taskKey[Unit]("Fix the license headers for all source files.") lazy val baseSettings: Seq[Def.Setting[?]] = GitVersion.settings lazy val buildSettings: Seq[Def.Setting[?]] = baseSettings ++ Seq( organization := "com.netflix.atlas_v1", scalaVersion := Dependencies.Versions.scala, scalacOptions := { CrossVersion.partialVersion(scalaVersion.value) match { case Some((2, _)) => compilerFlags ++ Seq("-Xsource:3", "-Wunused") case _ => compilerFlags ++ Seq("-source", "3.3", "-Wunused:all") } }, javacOptions ++= Seq("--release", "17"), crossPaths := true, crossScalaVersions := Dependencies.Versions.crossScala, sourcesInBase := false, exportJars := true, // Needed for one-jar, with multi-project externalResolvers := BuildSettings.resolvers, // Evictions: https://github.com/sbt/sbt/issues/1636 // Linting: https://github.com/sbt/sbt/pull/5153 (update / evictionWarningOptions).withRank(KeyRanks.Invisible) := EvictionWarningOptions.empty, checkLicenseHeaders := LicenseCheck.checkLicenseHeaders(streams.value.log, sourceDirectory.value), formatLicenseHeaders := LicenseCheck.formatLicenseHeaders(streams.value.log, sourceDirectory.value), packageBin / packageOptions += Package.ManifestAttributes( "Build-Date" -> java.time.Instant.now().toString, "Build-Number" -> sys.env.getOrElse("GITHUB_RUN_ID", "unknown"), "Commit" -> sys.env.getOrElse("GITHUB_SHA", "unknown") ), testFrameworks += new TestFramework("munit.Framework"), Test / parallelExecution := false ) val commonDeps: Seq[ModuleID] = Seq( Dependencies.jsr305, Dependencies.scalaCompat, Dependencies.scalaLogging, Dependencies.slf4jApi, Dependencies.spectatorApi, Dependencies.typesafeConfig, Dependencies.munit % "test" ) val resolvers: Seq[Resolver] = Seq( Resolver.mavenLocal, Resolver.mavenCentral, ) ++ Resolver.sonatypeOssRepos("snapshots") def profile: Project => Project = p => { p.settings(SonatypeSettings.settings) .settings(buildSettings *) .settings(libraryDependencies ++= commonDeps) } }