@@ -96,10 +96,18 @@ val buildSettings = Seq[Setting[?]](
9696 Test / compile := ((Test / compile) dependsOn (Test / jcheckStyle)).value
9797)
9898
99- val junitJupiter = " org.junit.jupiter" % " junit-jupiter" % " 5.14.4" % " test"
100- val junitVintage = " org.junit.vintage" % " junit-vintage-engine" % " 5.14.4" % " test"
99+ val junitJupiter = " org.junit.jupiter" % " junit-jupiter" % " 5.14.4" % " test"
100+ val junitVintage = " org.junit.vintage" % " junit-vintage-engine" % " 5.14.4" % " test"
101+ val junitInterface = " com.github.sbt" % " junit-interface" % " 0.13.3" % " test"
101102
102103// Project settings
104+ val isJava17Plus : Boolean = {
105+ val v = sys.props.getOrElse(" java.specification.version" , " 1.8" )
106+ // getOrElse(false): non-numeric versions (e.g. early-access "17-ea") fail safe
107+ // by not compiling the jackson3 module rather than making an optimistic guess.
108+ if (v.startsWith(" 1." )) false else scala.util.Try (v.toInt >= 17 ).getOrElse(false )
109+ }
110+
103111lazy val root = Project (id = " msgpack-java" , base = file(" ." ))
104112 .settings(
105113 buildSettings,
@@ -108,7 +116,10 @@ lazy val root = Project(id = "msgpack-java", base = file("."))
108116 publish := {},
109117 publishLocal := {}
110118 )
111- .aggregate(msgpackCore, msgpackJackson)
119+ .aggregate(
120+ Seq [ProjectReference ](msgpackCore, msgpackJackson) ++
121+ (if (isJava17Plus) Seq [ProjectReference ](msgpackJackson3) else Nil ): _*
122+ )
112123
113124lazy val msgpackCore = Project (id = " msgpack-core" , base = file(" msgpack-core" ))
114125 .enablePlugins(SbtOsgi )
@@ -170,3 +181,28 @@ lazy val msgpackJackson = Project(id = "msgpack-jackson", base = file("msgpack-j
170181 testOptions += Tests .Argument (TestFrameworks .JUnit , " -v" )
171182 )
172183 .dependsOn(msgpackCore)
184+
185+ lazy val msgpackJackson3 = Project (id = " msgpack-jackson3" , base = file(" msgpack-jackson3" ))
186+ .enablePlugins(SbtOsgi , JmhPlugin )
187+ .settings(
188+ buildSettings,
189+ name := " jackson-dataformat-msgpack-jackson3" ,
190+ description := " Jackson 3.x extension that adds support for MessagePack" ,
191+ OsgiKeys .bundleSymbolicName := " org.msgpack.msgpack-jackson3" ,
192+ OsgiKeys .exportPackage := Seq (" org.msgpack.jackson" , " org.msgpack.jackson.dataformat" ),
193+ OsgiKeys .importPackage := Seq (" !android.os" , " !sun.*" ),
194+ Test / fork := true ,
195+ javacOptions := Seq (" --release" , " 17" ),
196+ doc / javacOptions := Seq (" --release" , " 17" , " -Xdoclint:none" ),
197+ libraryDependencies ++=
198+ Seq (
199+ " tools.jackson.core" % " jackson-databind" % " 3.1.2" ,
200+ junitInterface
201+ ),
202+ testOptions += Tests .Argument (TestFrameworks .JUnit , " -v" ),
203+ Jmh / javaOptions ++= Seq (
204+ " --add-opens=java.base/java.nio=ALL-UNNAMED" ,
205+ " --add-opens=java.base/sun.nio.ch=ALL-UNNAMED"
206+ )
207+ )
208+ .dependsOn(msgpackCore)
0 commit comments