Patch: Add ServicesResourceTransformer to the archetypes and samples
Dmitry Timofeev
dmitry.timofeiev at gmail.com
Fri Oct 11 14:36:37 UTC 2019
Hi,
I've bumped into this issue in the SBT-JMH project, which includes
Async Profiler and Java Flight Recorder integrations for JMH. I added
declarations of the provided Profiler implementations in this library
so that they are discoverable by JMH through SPI mechanism and can be
used in any JMH benchmark. I also had declarations in a test benchmark
project. The standard JMH maven-shade-plugin configuration resulted in
it silently picking one of them and ignoring the other.
The related PR: https://github.com/ktoso/sbt-jmh/pull/173
The patch (please note it skips jmh-core-benchmarks/pom.xml, but may
be added there for consistency):
# HG changeset patch
# User Dmitry Timofeev <dmitry.timofeiev at gmail.com>
# Date 1570796728 -10800
# Fri Oct 11 15:25:28 2019 +0300
# Node ID 9a65f383a811d24ff0aeae79937848023a87d2d7
# Parent 99d7b73cf1e355341e835208f95447cc5617481d
Add ServicesResourceTransformer to the archetypes and samples:
Add a services transformer to correctly merge services declarations
in META-INF/services (including Profiler implementations,
used to extend JMH) coming from different JARs to include all
available service implementations.
Without this transformer service implementations coming from all JARs
but one will be lost.
See also: https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer
diff -r 99d7b73cf1e3 -r 9a65f383a811
jmh-archetypes/jmh-groovy-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
--- a/jmh-archetypes/jmh-groovy-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri May 17 10:44:26 2019 -0700
+++ b/jmh-archetypes/jmh-groovy-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri Oct 11 15:25:28 2019 +0300
@@ -211,6 +211,7 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.openjdk.jmh.Main</mainClass>
</transformer>
+ <transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
diff -r 99d7b73cf1e3 -r 9a65f383a811
jmh-archetypes/jmh-java-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
--- a/jmh-archetypes/jmh-java-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri May 17 10:44:26 2019 -0700
+++ b/jmh-archetypes/jmh-java-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri Oct 11 15:25:28 2019 +0300
@@ -106,6 +106,7 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.openjdk.jmh.Main</mainClass>
</transformer>
+ <transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
diff -r 99d7b73cf1e3 -r 9a65f383a811
jmh-archetypes/jmh-kotlin-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
--- a/jmh-archetypes/jmh-kotlin-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri May 17 10:44:26 2019 -0700
+++ b/jmh-archetypes/jmh-kotlin-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri Oct 11 15:25:28 2019 +0300
@@ -224,6 +224,7 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.openjdk.jmh.Main</mainClass>
</transformer>
+ <transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
diff -r 99d7b73cf1e3 -r 9a65f383a811
jmh-archetypes/jmh-scala-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
--- a/jmh-archetypes/jmh-scala-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri May 17 10:44:26 2019 -0700
+++ b/jmh-archetypes/jmh-scala-benchmark-archetype/src/main/resources/archetype-resources/pom.xml
Fri Oct 11 15:25:28 2019 +0300
@@ -217,6 +217,7 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.openjdk.jmh.Main</mainClass>
</transformer>
+ <transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
diff -r 99d7b73cf1e3 -r 9a65f383a811 jmh-samples/pom.xml
--- a/jmh-samples/pom.xml Fri May 17 10:44:26 2019 -0700
+++ b/jmh-samples/pom.xml Fri Oct 11 15:25:28 2019 +0300
@@ -103,6 +103,7 @@
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.openjdk.jmh.Main</mainClass>
</transformer>
+ <transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
--
Best wishes,
Dmitry Timofeev
More information about the jmh-dev
mailing list