-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild.sbt
118 lines (109 loc) · 3.64 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
117
118
import ReleaseTransformations._
lazy val scala212 = "2.12.8"
lazy val scala211 = "2.11.12"
lazy val root = project in file(".") aggregate (core, casbah, reactivemongo, scalaDriver) settings (
commonSettings,
publishSettings,
releaseSettings,
// According to the docs - crossScalaVersions must be set to Nil on the aggregating project to avoid double publishing
crossScalaVersions := Nil,
publish := {},
publishLocal := {},
publishArtifact := false
)
lazy val core = (project in file("core"))
.settings(
name := "mongoquery-core",
commonSettings,
publishSettings,
releaseSettings,
crossScalaVersions := Seq(scala212, scala211),
libraryDependencies ++= Seq(
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.0",
"org.scalacheck" %% "scalacheck" % "1.14.0" % Test,
"org.scala-lang" % "scala-compiler" % scalaVersion.value % Test
)
)
lazy val casbah = (project in file("casbah"))
.dependsOn(core % "test->test ; compile->compile")
.settings(
name := "mongoquery-casbah",
commonSettings,
crossScalaVersions := Seq(scala212, scala211),
publishSettings,
releaseSettings,
libraryDependencies += "org.mongodb" %% "casbah-core" % "3.1.1" % Provided
)
lazy val scalaDriver = (project in file("scala-driver"))
.dependsOn(core % "test->test ; compile->compile")
.settings(
name := "mongoquery-scala-driver",
commonSettings,
crossScalaVersions := Seq(scala212, scala211),
publishSettings,
releaseSettings,
libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "2.6.0" % Provided
)
lazy val reactivemongo = (project in file("reactivemongo"))
.dependsOn(core % "test->test ; compile->compile")
.settings(
name := "mongoquery-reactive",
commonSettings,
crossScalaVersions := Seq(scala212, scala211),
publishSettings,
releaseSettings,
resolvers += Resolver.typesafeRepo("releases"),
libraryDependencies += "org.reactivemongo" %% "reactivemongo" % "0.18.0" % Provided
)
lazy val commonSettings = Seq(
scalaVersion := scala212,
scalacOptions ++= Seq("-deprecation", "-unchecked", "-feature"),
libraryDependencies ++= Seq(
"org.scala-lang" % "scala-reflect" % scalaVersion.value,
"org.scalatest" %% "scalatest" % "3.0.8" % "test"
)
)
lazy val publishSettings = Seq(
licenses += ("Apache 2.0 License", url(
"http://www.apache.org/licenses/LICENSE-2.0")),
homepage := Some(url("http://github.com/limansky/mongoquery")),
publishMavenStyle := true,
Test / publishArtifact := false,
organization := "com.github.limansky",
scmInfo := Some(
ScmInfo(
url("https://github.com/limansky/mongoquery"),
"scm:git:https://github.com/limansky/mongoquery.git",
Some("scm:git:git@github.com:limansky/mongoquery.git")
)
),
publishTo := {
val nexus = "https://oss.sonatype.org/"
if (version.value.trim.endsWith("SNAPSHOT"))
Some("snapshots" at nexus + "content/repositories/snapshots")
else
Some("releases" at nexus + "service/local/staging/deploy/maven2")
},
developers := List(
Developer("limansky", "Mike Limansky", "mike.limansky@gmail.com", url("http://github.com/limansky"))
)
)
lazy val releaseSettings = Seq(
releaseCrossBuild := true,
releasePublishArtifactsAction := PgpKeys.publishSigned.value,
releaseTagName := s"mongoquery_${version.value}",
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
setReleaseVersion,
commitReleaseVersion,
tagRelease,
publishArtifacts,
setNextVersion,
commitNextVersion,
releaseStepCommand("sonatypeReleaseAll"),
pushChanges
)
)