-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.sbt
105 lines (95 loc) · 3.46 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
import sbtassembly.{Log4j2MergeStrategy, MergeStrategy}
ThisBuild / organization := "com.agnaldo4j"
ThisBuild / scalaVersion := "2.13.3"
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / name := "phanes"
ThisBuild / javacOptions ++= Seq("-source", "1.11", "-target", "1.11")
val defaultMergeStrategy: String => MergeStrategy = {
case x if Assembly.isConfigFile(x) =>
MergeStrategy.concat
case PathList(ps @ _*) if Assembly.isReadme(ps.last) || Assembly.isLicenseFile(ps.last) =>
MergeStrategy.rename
case PathList(ps @ _*) if ps.last == "Log4j2Plugins.dat" => Log4j2MergeStrategy.plugincache
case PathList("META-INF", xs @ _*) =>
(xs map {_.toLowerCase}) match {
case x if x.contains("io.netty.versions.properties") => MergeStrategy.first
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) | ("dependencies" :: Nil) =>
MergeStrategy.discard
case ps @ (x :: xs) if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
MergeStrategy.discard
case "plexus" :: xs =>
MergeStrategy.discard
case "services" :: xs =>
MergeStrategy.discard
case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
MergeStrategy.discard
case _ => MergeStrategy.deduplicate
}
case _ => MergeStrategy.deduplicate
}
lazy val domain = (project in file("domain"))
.settings(
name := "Domain"
).disablePlugins(AssemblyPlugin)
lazy val adapters = (project in file("adapters"))
.dependsOn(domain)
.settings(
name := "Adapters",
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.4.0",
)
).disablePlugins(AssemblyPlugin)
lazy val config = (project in file("config"))
.dependsOn(adapters)
.settings(
name := "Config",
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.4.0",
)
).disablePlugins(AssemblyPlugin)
lazy val quillPersistence = (project in file("quill-persistence"))
.dependsOn(config)
.settings(
name := "QuillPersistence",
libraryDependencies ++= Seq(
"org.postgresql" % "postgresql" % "42.2.17",
"io.getquill" %% "quill-jdbc" % "3.5.3"
).map(_.exclude("org.slf4j", "*"))
).disablePlugins(AssemblyPlugin)
lazy val useCase = (project in file("usecase"))
.dependsOn(adapters)
.settings(
name := "UseCase",
libraryDependencies ++= Seq(
"org.scalactic" %% "scalactic" % "3.2.0",
"org.scalatest" %% "scalatest" % "3.2.0" % "test",
"org.scalatest" %% "scalatest-freespec" % "3.2.0" % "test"
)
).disablePlugins(AssemblyPlugin)
lazy val eventBus = (project in file("eventbus"))
.dependsOn(useCase)
.settings(
name := "EventBus",
).disablePlugins(AssemblyPlugin)
lazy val restApi = (project in file("restapi"))
.dependsOn(quillPersistence, eventBus)
.settings(
name := "RestApi",
assemblyMergeStrategy in assembly := defaultMergeStrategy,
assemblyJarName in assembly := "phanes.jar",
test in assembly := {},
libraryDependencies ++= Seq(
"com.github.finagle" %% "finchx-core" % "0.32.1",
"com.github.finagle" %% "finchx-circe" % "0.32.1",
"io.circe" %% "circe-generic-extras" % "0.13.0",
),
excludeDependencies ++= Seq(
// commons-logging is replaced by jcl-over-slf4j
ExclusionRule("commons-logging", "commons-logging")
)
)
lazy val phanes = (project in file("."))
.aggregate(config, adapters, domain, quillPersistence, useCase, eventBus, restApi)
.settings(
name := "Phanes",
).disablePlugins(AssemblyPlugin)