Skip to content

Commit 32d1c71

Browse files
authored
Move Jackson 3 JMH benchmarks into a separate unpublished project (#1017)
JmhPlugin adds jmh-core, jmh-generator-bytecode and jmh-generator-reflection to libraryDependencies without a configuration, so enabling it on msgpack-jackson3 published them as compile dependencies of jackson-dataformat-msgpack, inherited by every consumer along with jopt-simple, commons-math3 and ASM. The released org.msgpack:jackson-dataformat-msgpack POM has no such entries. Move src/jmh into msgpack-jackson3-benchmark, which depends on msgpack-jackson3 and is not published. This is also how sbt-jmh recommends laying out benchmarks, since the code generator needs a project of its own.
1 parent 98e90f5 commit 32d1c71

12 files changed

Lines changed: 20 additions & 4 deletions

File tree

build.sbt

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ lazy val root = Project(id = "msgpack-java", base = file("."))
142142
.aggregate(
143143
Seq[ProjectReference](msgpackCore, msgpackJackson) ++ (
144144
if (isJava17Plus)
145-
Seq[ProjectReference](msgpackJackson3)
145+
Seq[ProjectReference](msgpackJackson3, msgpackJackson3Benchmark)
146146
else
147147
Nil
148148
): _*
@@ -217,7 +217,7 @@ lazy val msgpackJackson = Project(id = "msgpack-jackson", base = file("msgpack-j
217217
// and the Java package are renamed together, so this artifact can coexist on the same
218218
// classpath with the Jackson 2.x artifact (org.msgpack:jackson-dataformat-msgpack).
219219
lazy val msgpackJackson3 = Project(id = "msgpack-jackson3", base = file("msgpack-jackson3"))
220-
.enablePlugins(SbtOsgi, JmhPlugin)
220+
.enablePlugins(SbtOsgi)
221221
.settings(
222222
buildSettings,
223223
organization := "org.msgpack.jackson3",
@@ -234,11 +234,27 @@ lazy val msgpackJackson3 = Project(id = "msgpack-jackson3", base = file("msgpack
234234
doc / javacOptions := Seq("--release", "17", "-Xdoclint:none"),
235235
libraryDependencies ++=
236236
Seq("tools.jackson.core" % "jackson-databind" % "3.1.2", junitInterface),
237-
testOptions += Tests.Argument(TestFrameworks.JUnit, "-v"),
237+
testOptions += Tests.Argument(TestFrameworks.JUnit, "-v")
238+
)
239+
.dependsOn(msgpackCore)
240+
241+
// JMH benchmarks for the Jackson 3.x module. Kept in a separate, unpublished project as
242+
// sbt-jmh recommends: JmhPlugin adds jmh-core and the code generators to
243+
// libraryDependencies unscoped, so enabling it on a published module would leak them into
244+
// that module's POM as compile dependencies of every consumer.
245+
lazy val msgpackJackson3Benchmark = Project(
246+
id = "msgpack-jackson3-benchmark",
247+
base = file("msgpack-jackson3-benchmark")
248+
).enablePlugins(JmhPlugin)
249+
.settings(
250+
buildSettings,
251+
description := "JMH benchmarks for the Jackson 3.x MessagePack integration",
252+
publish / skip := true,
253+
javacOptions := Seq("--release", "17"),
238254
Jmh / javaOptions ++=
239255
Seq(
240256
"--add-opens=java.base/java.nio=ALL-UNNAMED",
241257
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"
242258
)
243259
)
244-
.dependsOn(msgpackCore)
260+
.dependsOn(msgpackJackson3)

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/BenchmarkState.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/BenchmarkState.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/MsgpackReadBenchmark.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/MsgpackReadBenchmark.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/MsgpackWriteBenchmark.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/MsgpackWriteBenchmark.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/NopOutputStream.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/NopOutputStream.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/WriteUTF8StringBenchmark.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/WriteUTF8StringBenchmark.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/Image.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/Image.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/MediaContent.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/MediaContent.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/MediaItem.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/MediaItem.java

File renamed without changes.

msgpack-jackson3/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/MediaItems.java renamed to msgpack-jackson3-benchmark/src/jmh/java/org/msgpack/jackson3/dataformat/benchmark/model/MediaItems.java

File renamed without changes.

0 commit comments

Comments
 (0)