@@ -57,6 +57,17 @@ scalaVersionsByJvm in ThisBuild := {
57
57
)
58
58
}
59
59
60
+ /** Create an OSGi version range for standard Scala versioning
61
+ * schemes that describes binary compatible versions. */
62
+ def osgiVersionRange (version : String , requireMicro : Boolean = false ): String =
63
+ if (version contains '-' ) " ${@}" // M, RC or SNAPSHOT -> exact version
64
+ else if (requireMicro) " ${range;[===,=+)}" // At least the same micro version
65
+ else " ${range;[==,=+)}" // Any binary compatible version
66
+
67
+ /** Create an OSGi Import-Package version specification. */
68
+ def osgiImport (pattern : String , version : String , requireMicro : Boolean = false ): String =
69
+ pattern + " ;version=\" " + osgiVersionRange(version, requireMicro) + " \" "
70
+
60
71
lazy val compat = MultiScalaCrossProject (JSPlatform , JVMPlatform )(
61
72
" compat" ,
62
73
_.settings(scalaModuleSettings)
@@ -73,7 +84,14 @@ lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform)(
73
84
}
74
85
)
75
86
.jvmSettings(
76
- OsgiKeys .exportPackage := Seq (s " scala.collection.compat.*;version= ${version.value}" ),
87
+ OsgiKeys .exportPackage := {
88
+ if (scalaVersion.value.startsWith(" 2.13." ))
89
+ Seq (s " scala.collection.compat.*;version= ${version.value}" )
90
+ else
91
+ Seq (s " scala.collection.compat.*;version= ${version.value},scala.jdk.*;version= ${version.value}" )
92
+ },
93
+ OsgiKeys .importPackage := Seq (osgiImport(" *" , scalaBinaryVersion.value)),
94
+ OsgiKeys .privatePackage := Nil ,
77
95
junit
78
96
)
79
97
.jsSettings(
0 commit comments