-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.sbt
108 lines (100 loc) · 3.81 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
import Dependencies.{Versions, _}
import sbt.Keys.{libraryDependencies, organization}
import sbt.url
import sbtbuildinfo.BuildInfoPlugin.autoImport.{buildInfoKeys, buildInfoOptions}
import sbtrelease.ReleasePlugin.autoImport.ReleaseTransformations._
lazy val publishSettings = Seq(
isSnapshot := version.value.trim.endsWith("SNAPSHOT"),
useGpg := true,
// Nexus (see https://www.scala-sbt.org/1.x/docs/Using-Sonatype.html)
publishTo := {
val repo = "https://oss.sonatype.org/"
if (isSnapshot.value) Some("snapshots" at repo + "content/repositories/snapshots")
else Some("releases" at repo + "service/local/staging/deploy/maven2")
},
publishArtifact in Test := true,
publishMavenStyle := true,
pomIncludeRepository := { x => false },
licenses := Seq("MIT-style" -> url("https://opensource.org/licenses/MIT")),
homepage := Some(url("https://github.com/tupol/scala-utils")),
scmInfo := Some(
ScmInfo(
url("https://github.com/tupol/scala-utils.git"),
"scm:[email protected]:tupol/scala-utils.git"
)
),
developers := List(
Developer(
id = "tupol",
name = "Tupol",
email = "[email protected]",
url = url("https://github.com/tupol")
)
),
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies, // : ReleaseStep
inquireVersions, // : ReleaseStep
runClean, // : ReleaseStep
runTest, // : ReleaseStep
setReleaseVersion, // : ReleaseStep
commitReleaseVersion, // : ReleaseStep, performs the initial git checks
tagRelease, // : ReleaseStep
releaseStepCommand(s"""sonatypeOpen "${organization.value}" "${name.value} v${version.value}""""),
releaseStepCommand("+publishSigned"),
releaseStepCommand("+sonatypeRelease"),
setNextVersion, // : ReleaseStep
commitNextVersion, // : ReleaseStep
pushChanges // : ReleaseStep, also checks that an upstream branch is properly configured
)
)
lazy val coverageSettings = Seq(
coverageEnabled in Test := true,
coverageMinimumStmtTotal in Test := 95,
coverageMinimumBranchTotal in Test := 80,
coverageFailOnMinimum in Test := true,
coverageExcludedPackages := ".*BuildInfo.*"
)
lazy val basicSettings = Seq(
organization := "org.tupol",
name := "scala-utils",
scalaVersion := Versions.scala_2_12,
crossScalaVersions := Versions.crossScala,
scalacOptions ++= Seq(
"-feature",
"-deprecation",
"-unchecked",
s"-release:${Versions.targetJava}"
),
updateOptions := updateOptions.value.withCachedResolution(true),
libraryDependencies ++= CoreTestDependencies,
scoverage.ScoverageKeys.coverageExcludedFiles := ".*BuildInfo.*"
)
val commonSettings = basicSettings ++ coverageSettings ++ publishSettings
lazy val core = (project in file("core"))
.enablePlugins(BuildInfoPlugin)
.settings(commonSettings: _*)
.settings(
name := "scala-utils-core",
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
buildInfoOptions := Seq[BuildInfoOption](BuildInfoOption.BuildTime, BuildInfoOption.ToMap, BuildInfoOption.ToJson),
buildInfoPackage := "org.tupol.utils",
libraryDependencies ++= CoreDependencies,
publishArtifact in Test := true
)
lazy val jdbc = (project in file("jdbc"))
.enablePlugins(BuildInfoPlugin)
.settings(commonSettings: _*)
.settings(
name := "scala-utils-jdbc",
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
buildInfoOptions := Seq[BuildInfoOption](BuildInfoOption.BuildTime, BuildInfoOption.ToMap, BuildInfoOption.ToJson),
buildInfoPackage := "org.tupol.utils.jdbc",
libraryDependencies ++= JdbcDependencies
)
.dependsOn(core % "test->test;compile->compile")
lazy val scala_utils = Project(
id = "scala-utils",
base = file(".")
).settings(commonSettings: _*)
.dependsOn(core % "test->test;compile->compile", jdbc)
.aggregate(core, jdbc)