@@ -21,57 +21,127 @@ val Scala213 = "2.13.8"
21
21
ThisBuild / crossScalaVersions := Seq (Scala213 , " 3.1.3" )
22
22
ThisBuild / scalaVersion := Scala213 // the default Scala
23
23
24
+ val CatsVersion = " 2.8.0"
25
+ val CatsEffectVersion = " 3.3.14"
26
+ val MUnitVersion = " 0.7.29"
27
+ val MUnitCatsEffectVersion = " 1.0.7"
28
+ val OpenTelemetryVersion = " 1.15.0"
29
+
30
+ lazy val scalaReflectDependency = Def .settings(
31
+ libraryDependencies ++= {
32
+ if (tlIsScala3.value) Nil
33
+ else Seq (" org.scala-lang" % " scala-reflect" % scalaVersion.value % Provided )
34
+ }
35
+ )
36
+
24
37
lazy val root = tlCrossRootProject
25
- .aggregate(core, testkit, java)
38
+ .aggregate(
39
+ `core-common`,
40
+ `core-metrics`,
41
+ core,
42
+ `testkit-common`,
43
+ `testkit-metrics`,
44
+ testkit,
45
+ `java-common`,
46
+ `java-metrics`,
47
+ java
48
+ )
26
49
.settings(name := " otel4s" )
27
50
51
+ lazy val `core-common` = crossProject(JVMPlatform , JSPlatform )
52
+ .crossType(CrossType .Pure )
53
+ .in(file(" core/common" ))
54
+ .settings(
55
+ name := " otel4s-core-common" ,
56
+ libraryDependencies ++= Seq (
57
+ " org.typelevel" %%% " cats-core" % CatsVersion ,
58
+ " org.scalameta" %%% " munit" % MUnitVersion % Test
59
+ )
60
+ )
61
+
62
+ lazy val `core-metrics` = crossProject(JVMPlatform , JSPlatform )
63
+ .crossType(CrossType .Pure )
64
+ .in(file(" core/metrics" ))
65
+ .dependsOn(`core-common`)
66
+ .settings(scalaReflectDependency)
67
+ .settings(
68
+ name := " otel4s-core-metrics" ,
69
+ libraryDependencies ++= Seq (
70
+ " org.typelevel" %%% " cats-effect-kernel" % CatsEffectVersion ,
71
+ " org.scalameta" %%% " munit" % MUnitVersion % Test ,
72
+ " org.typelevel" %%% " munit-cats-effect-3" % MUnitCatsEffectVersion % Test ,
73
+ " org.typelevel" %%% " cats-effect-testkit" % CatsEffectVersion % Test
74
+ )
75
+ )
76
+
28
77
lazy val core = crossProject(JVMPlatform , JSPlatform )
29
78
.crossType(CrossType .Pure )
30
- .in(file(" core" ))
79
+ .in(file(" core/all" ))
80
+ .dependsOn(`core-common`, `core-metrics`)
81
+ .settings(
82
+ name := " otel4s-core"
83
+ )
84
+
85
+ lazy val `testkit-common` = crossProject(JVMPlatform )
86
+ .crossType(CrossType .Full )
87
+ .in(file(" testkit/common" ))
88
+ .dependsOn(`core-common`)
31
89
.settings(
32
- name := " otel4s-core" ,
90
+ name := " otel4s-testkit-common"
91
+ )
92
+
93
+ lazy val `testkit-metrics` = crossProject(JVMPlatform )
94
+ .crossType(CrossType .Full )
95
+ .in(file(" testkit/metrics" ))
96
+ .dependsOn(`testkit-common`, `core-metrics`)
97
+ .settings(
98
+ name := " otel4s-testkit-metrics"
99
+ )
100
+ .jvmSettings(
33
101
libraryDependencies ++= Seq (
34
- " org.typelevel" %%% " cats-core" % " 2.8.0" ,
35
- " org.typelevel" %%% " cats-effect" % " 3.3.14" ,
36
- " org.scalameta" %%% " munit" % " 0.7.29" % Test ,
37
- " org.typelevel" %%% " munit-cats-effect-3" % " 1.0.7" % Test ,
38
- " org.typelevel" %%% " cats-effect-testkit" % " 3.3.14" % Test
39
- ),
40
- libraryDependencies ++= {
41
- if (tlIsScala3.value) Nil
42
- else
43
- Seq (" org.scala-lang" % " scala-reflect" % scalaVersion.value % Provided )
44
- }
102
+ " io.opentelemetry" % " opentelemetry-api" % OpenTelemetryVersion ,
103
+ " io.opentelemetry" % " opentelemetry-sdk" % OpenTelemetryVersion ,
104
+ " io.opentelemetry" % " opentelemetry-sdk-testing" % OpenTelemetryVersion
105
+ )
45
106
)
46
107
47
108
lazy val testkit = crossProject(JVMPlatform )
48
109
.crossType(CrossType .Full )
49
- .in(file(" testkit" ))
110
+ .in(file(" testkit/all" ))
111
+ .dependsOn(`testkit-common`, `testkit-metrics`)
50
112
.settings(
51
113
name := " otel4s-testkit"
52
114
)
53
- .jvmSettings(
115
+
116
+ lazy val `java-common` = project
117
+ .in(file(" java/common" ))
118
+ .dependsOn(`core-common`.jvm, `testkit-common`.jvm)
119
+ .settings(
120
+ name := " otel4s-java-common" ,
54
121
libraryDependencies ++= Seq (
55
- " io.opentelemetry" % " opentelemetry-api" % " 1.15.0" ,
56
- " io.opentelemetry" % " opentelemetry-sdk" % " 1.15.0" ,
57
- " io.opentelemetry" % " opentelemetry-sdk-testing" % " 1.15.0"
122
+ " io.opentelemetry" % " opentelemetry-api" % OpenTelemetryVersion
58
123
)
59
124
)
60
- .dependsOn(core)
61
125
62
- lazy val java = crossProject( JVMPlatform )
63
- .crossType( CrossType . Pure )
64
- .in(file( " java" ) )
126
+ lazy val ` java-metrics` = project
127
+ .in(file( " java/metrics " ) )
128
+ .dependsOn(` java-common`, `core-metrics`.jvm, `testkit-metrics`.jvm )
65
129
.settings(
66
- name := " otel4s-java" ,
130
+ name := " otel4s-java-metrics " ,
67
131
libraryDependencies ++= Seq (
68
- " io.opentelemetry" % " opentelemetry-api" % " 1.15.0 " ,
69
- " io.opentelemetry" % " opentelemetry-sdk" % " 1.15.0 " % Test ,
70
- " io.opentelemetry" % " opentelemetry-sdk-testing" % " 1.15.0 " % Test ,
71
- " org.scalameta" %% " munit" % " 0.7.29 " % Test ,
72
- " org.typelevel" %% " munit-cats-effect-3" % " 1.0.7 " % Test
132
+ " io.opentelemetry" % " opentelemetry-api" % OpenTelemetryVersion ,
133
+ " io.opentelemetry" % " opentelemetry-sdk" % OpenTelemetryVersion % Test ,
134
+ " io.opentelemetry" % " opentelemetry-sdk-testing" % OpenTelemetryVersion % Test ,
135
+ " org.scalameta" %% " munit" % MUnitVersion % Test ,
136
+ " org.typelevel" %% " munit-cats-effect-3" % MUnitCatsEffectVersion % Test
73
137
)
74
138
)
75
- .dependsOn(core, testkit)
139
+
140
+ lazy val java = project
141
+ .in(file(" java/all" ))
142
+ .dependsOn(core.jvm, `java-metrics`)
143
+ .settings(
144
+ name := " otel4s-java"
145
+ )
76
146
77
147
lazy val docs = project.in(file(" site" )).enablePlugins(TypelevelSitePlugin )
0 commit comments