-
Notifications
You must be signed in to change notification settings - Fork 7
/
build.sbt
118 lines (109 loc) · 3.55 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
lazy val scala212 = "2.12.18"
lazy val scala213 = "2.13.11"
lazy val supportedScalaVersions = List(scala212, scala213)
val circeVersion = "0.14.2"
val scalaTestArtifact = "org.scalatest" %% "scalatest" % "3.2.+" % Test
val telepathyDep = "com.salesforce.mce" %% "telepathy" % "1.5.0"
val typesafeConfigDep = "com.typesafe" % "config" % "1.4.2"
val scoptDep = "com.github.scopt" %% "scopt" % "4.1.0"
val scalaComatDep = "org.scala-lang.modules" %% "scala-collection-compat" % "2.11.0"
lazy val publishSettings = Seq(
publishMavenStyle := true,
pomIncludeRepository := { _ => false },
publishTo := sonatypePublishToBundle.value,
licenses := Seq("BSD-3-Clause" -> url("https://opensource.org/licenses/BSD-3-Clause")),
homepage := Some(url("https://github.com/salesforce/spade")),
scmInfo := Some(
ScmInfo(
url("https://github.com/salesforce/spade"),
"scm:git:[email protected]:salesforce/spade.git"
)
),
credentials += Credentials(
"Sonatype Nexus Repository Manager",
"oss.sonatype.org",
sys.env.getOrElse("SONATYPE_USERNAME",""),
sys.env.getOrElse("SONATYPE_PASSWORD","")
),
developers := List(
Developer(
id = "realstraw",
name = "Kexin Xie",
email = "[email protected]",
url = url("http://github.com/realstraw")
)
),
useGpgPinentry := true
)
lazy val noPublishSettings = Seq(
publishArtifact := false,
publish := {},
publishLocal := {},
// to fix the problem of "Repository for publishing is not specified."
publishTo := Some(Resolver.file("Unused transient repository", file("target/unusedrepo")))
)
lazy val commonSettings = Seq(
scalacOptions ++= Seq("-deprecation", "-feature", "-Xlint"), // , "-Xfatal-warnings"),
scalaVersion := scala212,
crossScalaVersions := supportedScalaVersions,
scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, 13)) => Seq("-Xlint:-byname-implicit,_")
case _ => Seq.empty[String]
}),
libraryDependencies += scalaTestArtifact,
fork := true,
organization := "com.salesforce.mce",
headerLicense := Some(HeaderLicense.Custom(
"""|Copyright (c) 2022, salesforce.com, inc.
|All rights reserved.
|SPDX-License-Identifier: BSD-3-Clause
|For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|""".stripMargin
))
)
lazy val root = (project in file("."))
.settings(commonSettings: _*)
.settings(noPublishSettings: _*)
.settings(
name := "spade"
)
.aggregate(core, aws, examples)
lazy val core = (project in file("spade-core"))
.enablePlugins(BuildInfoPlugin)
.settings(commonSettings: _*)
.settings(publishSettings: _*)
.settings(
name := "spade-core",
buildInfoKeys := Seq[BuildInfoKey](name, version),
buildInfoPackage := "com.salesforce.mce.spade",
libraryDependencies ++= Seq(
telepathyDep,
typesafeConfigDep,
scoptDep,
scalaComatDep
)
)
lazy val aws = (project in file("spade-aws"))
.settings(commonSettings: _*)
.settings(publishSettings: _*)
.settings(
name := "spade-aws"
)
.dependsOn(core)
lazy val examples = (project in file("spade-examples"))
.settings(commonSettings: _*)
.settings(noPublishSettings: _*)
.settings(assembly / test := {})
.settings(
assembly / assemblyMergeStrategy := {
case x if x.endsWith("module-info.class") =>
MergeStrategy.discard
case x =>
val oldStrategy = (assembly / assemblyMergeStrategy).value
oldStrategy(x)
}
)
.settings(
name := "spade-examples"
)
.dependsOn(aws)