-
-
Notifications
You must be signed in to change notification settings - Fork 283
/
build.sbt
116 lines (99 loc) · 3.58 KB
/
build.sbt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import scala.sys.process._
import com.typesafe.tools.mima.plugin.MimaPlugin._
import interplay.ScalaVersions._
resolvers in ThisBuild += Resolver.sonatypeRepo("releases")
// Customise sbt-dynver's behaviour to make it work with tags which aren't v-prefixed
dynverVTagPrefix in ThisBuild := false
// Sanity-check: assert that version comes from a tag (e.g. not a too-shallow clone)
// https://github.com/dwijnand/sbt-dynver/#sanity-checking-the-version
Global / onLoad := (Global / onLoad).value.andThen { s =>
val v = version.value
if (dynverGitDescribeOutput.value.hasNoTags)
throw new MessageOnlyException(
s"Failed to derive version from git tags. Maybe run `git fetch --unshallow`? Version: $v"
)
s
}
lazy val commonSettings = Seq(
// Work around https://issues.scala-lang.org/browse/SI-9311
scalacOptions ~= (_.filterNot(_ == "-Xfatal-warnings")),
scalaVersion := scala213,
crossScalaVersions := Seq(scala213, scala212),
resolvers += "akka-snapshot-repository".at("https://repo.akka.io/snapshots")
)
lazy val `play-slick-root` = (project in file("."))
.enablePlugins(PlayRootProject)
.aggregate(
`play-slick`,
`play-slick-evolutions`
)
.settings(commonSettings)
.settings(
Seq(
// this overrides releaseProcess to make it work with sbt-dynver
releaseProcess := {
import ReleaseTransformations._
Seq[ReleaseStep](
checkSnapshotDependencies,
runClean,
releaseStepCommandAndRemaining("+test"),
releaseStepCommandAndRemaining("+publishSigned"),
releaseStepCommand("sonatypeBundleRelease"),
pushChanges // <- this needs to be removed when releasing from tag
)
}
)
)
lazy val `play-slick` = (project in file("src/core"))
.enablePlugins(PlayLibrary, Playdoc)
.configs(Docs)
.settings(libraryDependencies ++= Dependencies.core)
.settings(mimaSettings)
.settings(commonSettings)
lazy val `play-slick-evolutions` = (project in file("src/evolutions"))
.enablePlugins(PlayLibrary, Playdoc)
.configs(Docs)
.settings(libraryDependencies ++= Dependencies.evolutions)
.settings(mimaSettings)
.settings(commonSettings)
.dependsOn(`play-slick` % "compile;test->test")
lazy val docs = project
.in(file("docs"))
.enablePlugins(PlayDocsPlugin)
.configs(Docs)
.dependsOn(`play-slick`)
.dependsOn(`play-slick-evolutions`)
.settings(commonSettings)
playBuildRepoName in ThisBuild := "play-slick"
playBuildExtraTests := {
(test in (samples, Test)).value
}
// Binary compatibility is tested against this version
val previousVersion: Option[String] = Some("5.0.0")
ThisBuild / mimaFailOnNoPrevious := false
def mimaSettings = mimaDefaultSettings ++ Seq(
mimaPreviousArtifacts := previousVersion.map(organization.value %% moduleName.value % _).toSet
)
lazy val samples = project
.in(file("samples"))
.aggregate(
basicSample,
computerDatabaseSample,
streamsSample
)
def sampleProject(name: String) =
Project(s"$name-sample", file("samples") / name)
.enablePlugins(PlayScala)
.disablePlugins(PlayFilters)
.dependsOn(`play-slick`)
.dependsOn(`play-slick-evolutions`)
.settings(
libraryDependencies += Library.playSpecs2 % "test",
concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)
)
.settings(libraryDependencies += Library.h2)
.settings(javaOptions in Test += "-Dslick.dbs.default.connectionTimeout=30 seconds")
.settings(commonSettings)
lazy val computerDatabaseSample = sampleProject("computer-database")
lazy val streamsSample = sampleProject("streams")
lazy val basicSample = sampleProject("basic")