From 0c77654d84d05c8aa681aa139417ffb5047b4b4f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 Aug 2025 17:40:36 +0000 Subject: [PATCH 1/3] Initial plan From fe9ee78a98273fed876f73d36308462993d61cc3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 Aug 2025 18:04:58 +0000 Subject: [PATCH 2/3] Add @AutoService annotations and update test visibility for style guide compliance Co-authored-by: trask <218610+trask@users.noreply.github.com> --- maven-extension/build.gradle.kts | 3 +++ .../maven/resources/MavenResourceDetector.java | 3 +++ .../maven/resources/MavenResourceProvider.java | 2 ++ ...emetry.sdk.autoconfigure.spi.ResourceProvider | 1 - ....autoconfigure.spi.internal.ComponentProvider | 1 - .../io/opentelemetry/maven/MavenUtilsTests.java | 2 +- .../maven/OpenTelemetrySdkServiceTest.java | 12 ++++++------ .../io/opentelemetry/maven/SpanRegistryTest.java | 4 ++-- ...ojoGoalExecutionHandlerConfigurationTest.java | 2 +- .../handler/MojoGoalExecutionHandlerTest.java | 16 ++++++++-------- 10 files changed, 26 insertions(+), 20 deletions(-) delete mode 100644 maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider delete mode 100644 maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider diff --git a/maven-extension/build.gradle.kts b/maven-extension/build.gradle.kts index 15755f0ce..5a1d62d2c 100644 --- a/maven-extension/build.gradle.kts +++ b/maven-extension/build.gradle.kts @@ -27,7 +27,9 @@ dependencies { implementation("io.opentelemetry.semconv:opentelemetry-semconv") implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") + annotationProcessor("com.google.auto.service:auto-service") annotationProcessor("com.google.auto.value:auto-value") + compileOnly("com.google.auto.service:auto-service") compileOnly("com.google.auto.value:auto-value-annotations") compileOnly("org.apache.maven:maven-core:3.5.0") // do not auto-update, support older mvn versions @@ -36,6 +38,7 @@ dependencies { testImplementation("io.opentelemetry:opentelemetry-api-incubator") testImplementation("org.apache.maven:maven-core:3.5.0") testImplementation("org.slf4j:slf4j-simple") + testImplementation("com.google.auto.service:auto-service") } // The jar dependencies bundled in the uber-jar by the shadow plugin are wrongly added as diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java index 47ff50759..7edb641c6 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java @@ -5,10 +5,13 @@ package io.opentelemetry.maven.resources; +import com.google.auto.service.AutoService; import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; +@SuppressWarnings("rawtypes") +@AutoService(ComponentProvider.class) public class MavenResourceDetector implements ComponentProvider { @Override diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java index 9b75d11d0..ea2922a4f 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java @@ -5,6 +5,7 @@ package io.opentelemetry.maven.resources; +import com.google.auto.service.AutoService; import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; @@ -17,6 +18,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@AutoService(ResourceProvider.class) public class MavenResourceProvider implements ResourceProvider { private static final Logger logger = LoggerFactory.getLogger(MavenResourceProvider.class); diff --git a/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider b/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider deleted file mode 100644 index 977f7168d..000000000 --- a/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider +++ /dev/null @@ -1 +0,0 @@ -io.opentelemetry.maven.resources.MavenResourceProvider diff --git a/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider deleted file mode 100644 index baac89a6a..000000000 --- a/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ /dev/null @@ -1 +0,0 @@ -io.opentelemetry.maven.resources.MavenResourceDetector diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/MavenUtilsTests.java b/maven-extension/src/test/java/io/opentelemetry/maven/MavenUtilsTests.java index 9c4fee91b..637b4f841 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/MavenUtilsTests.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/MavenUtilsTests.java @@ -9,7 +9,7 @@ import org.junit.jupiter.api.Test; -public class MavenUtilsTests { +class MavenUtilsTests { @Test public void getPluginArtifactIdShortName_builtinPluginName() { diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/OpenTelemetrySdkServiceTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/OpenTelemetrySdkServiceTest.java index e2cc37a28..0b94dce54 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/OpenTelemetrySdkServiceTest.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/OpenTelemetrySdkServiceTest.java @@ -17,11 +17,11 @@ * Note: if otel-java-contrib bumps to Java 11+, we could use junit-pioneer's * {@code @SetSystemProperty} and {@code @ClearSystemProperty} but no bump is planned for now. */ -public class OpenTelemetrySdkServiceTest { +class OpenTelemetrySdkServiceTest { /** Verify default config */ @Test - public void testDefaultConfiguration() { + void testDefaultConfiguration() { System.clearProperty("otel.exporter.otlp.endpoint"); System.clearProperty("otel.service.name"); System.clearProperty("otel.resource.attributes"); @@ -40,7 +40,7 @@ public void testDefaultConfiguration() { /** Verify overwritten `service.name`,`key1` and `key2` */ @Test - public void testOverwrittenResourceAttributes() { + void testOverwrittenResourceAttributes() { System.setProperty("otel.service.name", "my-maven"); System.setProperty("otel.resource.attributes", "key1=val1,key2=val2"); @@ -59,7 +59,7 @@ public void testOverwrittenResourceAttributes() { /** Verify defining `otel.exporter.otlp.endpoint` works */ @Test - public void testOverwrittenExporterConfiguration_1() { + void testOverwrittenExporterConfiguration_1() { System.setProperty("otel.exporter.otlp.endpoint", "https://example.com:4317"); try (OpenTelemetrySdkService openTelemetrySdkService = new OpenTelemetrySdkService()) { @@ -78,7 +78,7 @@ public void testOverwrittenExporterConfiguration_1() { /** Verify defining `otel.exporter.otlp.traces.endpoint` works */ @Test - public void testOverwrittenExporterConfiguration_2() { + void testOverwrittenExporterConfiguration_2() { System.clearProperty("otel.exporter.otlp.endpoint"); System.clearProperty("otel.traces.exporter"); System.setProperty("otel.exporter.otlp.traces.endpoint", "https://example.com:4317/"); @@ -102,7 +102,7 @@ public void testOverwrittenExporterConfiguration_2() { /** Verify defining `otel.exporter.otlp.traces.endpoint` and `otel.traces.exporter` works */ @Test - public void testOverwrittenExporterConfiguration_3() { + void testOverwrittenExporterConfiguration_3() { System.clearProperty("otel.exporter.otlp.endpoint"); System.setProperty("otel.traces.exporter", "otlp"); System.setProperty("otel.exporter.otlp.traces.endpoint", "https://example.com:4317/"); diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/SpanRegistryTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/SpanRegistryTest.java index 864ce8df8..2a01a1754 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/SpanRegistryTest.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/SpanRegistryTest.java @@ -12,11 +12,11 @@ import io.opentelemetry.api.trace.Tracer; import org.junit.jupiter.api.Test; -public class SpanRegistryTest { +class SpanRegistryTest { /** MVND reuses the same Maven process and thus the Span Registry is reused. */ @Test - public void testSpanRegistryReuseWhenUsingMvnDaemon() { + void testSpanRegistryReuseWhenUsingMvnDaemon() { SpanRegistry spanRegistry = new SpanRegistry(); Tracer tracer = OpenTelemetry.noop().getTracer("test"); diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfigurationTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfigurationTest.java index 21748cebb..ae8e4798b 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfigurationTest.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfigurationTest.java @@ -12,7 +12,7 @@ import java.util.Map; import org.junit.jupiter.api.Test; -public class MojoGoalExecutionHandlerConfigurationTest { +class MojoGoalExecutionHandlerConfigurationTest { @Test public void mojoGoalExecutionHandlers() { diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerTest.java index b193ccdb5..645ecfa0d 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerTest.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerTest.java @@ -47,10 +47,10 @@ * https://github.com/takari/takari-lifecycle/blob/master/takari-lifecycle-plugin/src/test/java/io/takari/maven/plugins/plugin/PluginDescriptorMojoTest.java */ @SuppressWarnings({"DeduplicateConstants", "deprecation"}) -public class MojoGoalExecutionHandlerTest { +class MojoGoalExecutionHandlerTest { @Test - public void testMavenDeploy() throws Exception { + void testMavenDeploy() throws Exception { String pomXmlPath = "projects/jar/pom.xml"; String mojoGroupId = "org.apache.maven.plugins"; @@ -92,7 +92,7 @@ public void testMavenDeploy() throws Exception { } @Test - public void testSpringBootBuildImage_springboot_1() throws Exception { + void testSpringBootBuildImage_springboot_1() throws Exception { String pomXmlPath = "projects/springboot_1/pom.xml"; String mojoGroupId = "org.springframework.boot"; @@ -136,7 +136,7 @@ public void testSpringBootBuildImage_springboot_1() throws Exception { } @Test - public void testSpringBootBuildImage_springboot_2() throws Exception { + void testSpringBootBuildImage_springboot_2() throws Exception { String pomXmlPath = "projects/springboot_2/pom.xml"; String mojoGroupId = "org.springframework.boot"; @@ -180,7 +180,7 @@ public void testSpringBootBuildImage_springboot_2() throws Exception { } @Test - public void testGoogleJibBuild_jib_1() throws Exception { + void testGoogleJibBuild_jib_1() throws Exception { String pomXmlPath = "projects/jib_1/pom.xml"; String mojoGroupId = "com.google.cloud.tools"; @@ -221,7 +221,7 @@ public void testGoogleJibBuild_jib_1() throws Exception { } @Test - public void testGoogleJibBuild_jib_2() throws Exception { + void testGoogleJibBuild_jib_2() throws Exception { String pomXmlPath = "projects/jib_2/pom.xml"; String mojoGroupId = "com.google.cloud.tools"; @@ -262,7 +262,7 @@ public void testGoogleJibBuild_jib_2() throws Exception { } @Test - public void testSnykTest_snyk_1() throws Exception { + void testSnykTest_snyk_1() throws Exception { String pomXmlPath = "projects/snyk_1/pom.xml"; String mojoGroupId = "io.snyk"; @@ -298,7 +298,7 @@ public void testSnykTest_snyk_1() throws Exception { } @Test - public void testSnykMonitor_snyk_1() throws Exception { + void testSnykMonitor_snyk_1() throws Exception { String pomXmlPath = "projects/snyk_1/pom.xml"; String mojoGroupId = "io.snyk"; From 976ce0bf34c09fe3dbfb1a2e43f144d9174c325f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 Aug 2025 18:12:43 +0000 Subject: [PATCH 3/3] Complete @AutoService migration for all SPI implementations and update handler configuration Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../maven/handler/GoogleJibBuildHandler.java | 4 +++- .../opentelemetry/maven/handler/MavenDeployHandler.java | 4 +++- .../handler/MojoGoalExecutionHandlerConfiguration.java | 8 +------- .../opentelemetry/maven/handler/SnykMonitorHandler.java | 4 +++- .../io/opentelemetry/maven/handler/SnykTestHandler.java | 4 +++- .../maven/handler/SpringBootBuildImageHandler.java | 4 +++- ...o.opentelemetry.maven.handler.MojoGoalExecutionHandler | 1 - 7 files changed, 16 insertions(+), 13 deletions(-) delete mode 100644 maven-extension/src/main/resources/META-INF/services/io.opentelemetry.maven.handler.MojoGoalExecutionHandler diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/handler/GoogleJibBuildHandler.java b/maven-extension/src/main/java/io/opentelemetry/maven/handler/GoogleJibBuildHandler.java index b31c22ee3..5e6201136 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/handler/GoogleJibBuildHandler.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/handler/GoogleJibBuildHandler.java @@ -5,6 +5,7 @@ package io.opentelemetry.maven.handler; +import com.google.auto.service.AutoService; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.maven.MavenGoal; @@ -21,7 +22,8 @@ import org.slf4j.LoggerFactory; /** See https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin */ -final class GoogleJibBuildHandler implements MojoGoalExecutionHandler { +@AutoService(MojoGoalExecutionHandler.class) +public final class GoogleJibBuildHandler implements MojoGoalExecutionHandler { private static final Logger logger = LoggerFactory.getLogger(GoogleJibBuildHandler.class); @Override diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/handler/MavenDeployHandler.java b/maven-extension/src/main/java/io/opentelemetry/maven/handler/MavenDeployHandler.java index b9e889cda..379e76b73 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/handler/MavenDeployHandler.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/handler/MavenDeployHandler.java @@ -5,6 +5,7 @@ package io.opentelemetry.maven.handler; +import com.google.auto.service.AutoService; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.maven.MavenGoal; @@ -26,7 +27,8 @@ * achieve this instrumenting the Aether library */ -final class MavenDeployHandler implements MojoGoalExecutionHandler { +@AutoService(MojoGoalExecutionHandler.class) +public final class MavenDeployHandler implements MojoGoalExecutionHandler { private static final Logger logger = LoggerFactory.getLogger(MavenDeployHandler.class); @Override diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfiguration.java b/maven-extension/src/main/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfiguration.java index 617b78474..a0131d626 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfiguration.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/handler/MojoGoalExecutionHandlerConfiguration.java @@ -20,13 +20,7 @@ public static Map loadMojoGoalExecutionHand ClassLoader classLoader) { // built-in handlers - List builtInHandlers = - Arrays.asList( - new GoogleJibBuildHandler(), - new MavenDeployHandler(), - new SnykMonitorHandler(), - new SnykTestHandler(), - new SpringBootBuildImageHandler()); + List builtInHandlers = Arrays.asList(); List spiHandlers = new ArrayList<>(); // Must use the classloader of the class rather the default ThreadContextClassloader to prevent diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykMonitorHandler.java b/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykMonitorHandler.java index 2215f0c6b..33b8c6d17 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykMonitorHandler.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykMonitorHandler.java @@ -5,6 +5,7 @@ package io.opentelemetry.maven.handler; +import com.google.auto.service.AutoService; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.maven.MavenGoal; @@ -16,7 +17,8 @@ import org.apache.maven.execution.ExecutionEvent; /** See https://github.com/snyk/snyk-maven-plugin */ -final class SnykMonitorHandler implements MojoGoalExecutionHandler { +@AutoService(MojoGoalExecutionHandler.class) +public final class SnykMonitorHandler implements MojoGoalExecutionHandler { /** * Snyk command "reversed engineered" invoking the Snyk CLI on a Maven project with the `-d` debug diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykTestHandler.java b/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykTestHandler.java index 1467ad253..bf9036a32 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykTestHandler.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/handler/SnykTestHandler.java @@ -5,6 +5,7 @@ package io.opentelemetry.maven.handler; +import com.google.auto.service.AutoService; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.maven.MavenGoal; @@ -16,7 +17,8 @@ import org.apache.maven.execution.ExecutionEvent; /** See https://github.com/snyk/snyk-maven-plugin */ -final class SnykTestHandler implements MojoGoalExecutionHandler { +@AutoService(MojoGoalExecutionHandler.class) +public final class SnykTestHandler implements MojoGoalExecutionHandler { /** * Snyk command "reversed engineered" invoking the Snyk CLI on a Maven project with the `-d` debug diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/handler/SpringBootBuildImageHandler.java b/maven-extension/src/main/java/io/opentelemetry/maven/handler/SpringBootBuildImageHandler.java index ff405559d..f9e3ee73b 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/handler/SpringBootBuildImageHandler.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/handler/SpringBootBuildImageHandler.java @@ -5,6 +5,7 @@ package io.opentelemetry.maven.handler; +import com.google.auto.service.AutoService; import io.opentelemetry.api.trace.SpanBuilder; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.maven.MavenGoal; @@ -32,7 +33,8 @@ * : spring-boot/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/ * */ -final class SpringBootBuildImageHandler implements MojoGoalExecutionHandler { +@AutoService(MojoGoalExecutionHandler.class) +public final class SpringBootBuildImageHandler implements MojoGoalExecutionHandler { private static final Logger logger = LoggerFactory.getLogger(SpringBootBuildImageHandler.class); @Override diff --git a/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.maven.handler.MojoGoalExecutionHandler b/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.maven.handler.MojoGoalExecutionHandler deleted file mode 100644 index 8b1378917..000000000 --- a/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.maven.handler.MojoGoalExecutionHandler +++ /dev/null @@ -1 +0,0 @@ -