From e3683a6d4edd111494a25e876043a35093385ef4 Mon Sep 17 00:00:00 2001 From: David Nestorovic Date: Fri, 4 Apr 2025 13:36:30 +0200 Subject: [PATCH 1/4] Add proivded dependencies on classpath --- .../main/java/org/graalvm/buildtools/maven/NativeTestMojo.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/native-maven-plugin/src/main/java/org/graalvm/buildtools/maven/NativeTestMojo.java b/native-maven-plugin/src/main/java/org/graalvm/buildtools/maven/NativeTestMojo.java index a59009a57..353370829 100644 --- a/native-maven-plugin/src/main/java/org/graalvm/buildtools/maven/NativeTestMojo.java +++ b/native-maven-plugin/src/main/java/org/graalvm/buildtools/maven/NativeTestMojo.java @@ -113,7 +113,8 @@ protected List getDependencyScopes() { Artifact.SCOPE_COMPILE, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_TEST, - Artifact.SCOPE_COMPILE_PLUS_RUNTIME + Artifact.SCOPE_COMPILE_PLUS_RUNTIME, + Artifact.SCOPE_PROVIDED ); } From a148793e500ba631fa93dc86e573046f522898aa Mon Sep 17 00:00:00 2001 From: David Nestorovic Date: Tue, 15 Apr 2025 15:29:23 +0200 Subject: [PATCH 2/4] Add test for scope provided dependency --- ...aApplicationWithTestsFunctionalTest.groovy | 22 +++++++++++++++++++ samples/java-application-with-tests/pom.xml | 6 +++++ 2 files changed, 28 insertions(+) diff --git a/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy b/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy index 80e6f5c18..82cd605df 100644 --- a/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy +++ b/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy @@ -153,4 +153,26 @@ class JavaApplicationWithTestsFunctionalTest extends AbstractGraalVMMavenFunctio outputContains "SurefirePlugin - Tests run: 8, Failures: 0, Errors: 0, Skipped: 0" } + def "dependencies with scope provided are on classpath for test binary"() { + withSample("java-application-with-tests") + + when: + mvn '-Pnative', '-DquickBuild', 'test' + + then: + buildSucceeded + outputContains "local-repo/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar" + } + + def "dependencies with scope provided are not on classpath for main binary"() { + withSample("java-application-with-tests") + + when: + mvn '-Pnative', '-DquickBuild', '-DskipNativeTests', 'package' + + then: + buildSucceeded + outputDoesNotContain "local-repo/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar" + } + } diff --git a/samples/java-application-with-tests/pom.xml b/samples/java-application-with-tests/pom.xml index a5631def4..19b088af7 100644 --- a/samples/java-application-with-tests/pom.xml +++ b/samples/java-application-with-tests/pom.xml @@ -59,6 +59,12 @@ + + org.apache.commons + commons-lang3 + 3.12.0 + provided + org.junit.jupiter junit-jupiter From 6966ca353a5e214bf7809713ca0a1e3351699ff6 Mon Sep 17 00:00:00 2001 From: David Nestorovic Date: Wed, 16 Apr 2025 12:33:02 +0200 Subject: [PATCH 3/4] Use platform dependent path to dependency jar --- .../maven/JavaApplicationWithTestsFunctionalTest.groovy | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy b/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy index 82cd605df..853b3a12d 100644 --- a/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy +++ b/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy @@ -159,9 +159,11 @@ class JavaApplicationWithTestsFunctionalTest extends AbstractGraalVMMavenFunctio when: mvn '-Pnative', '-DquickBuild', 'test' + def expectedOutput = ["local-repo", "org", "apache", "commons", "commons-lang3", "3.12.0", "commons-lang3-3.12.0.jar"].join(File.separator) + then: buildSucceeded - outputContains "local-repo/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar" + outputContains expectedOutput } def "dependencies with scope provided are not on classpath for main binary"() { @@ -170,9 +172,11 @@ class JavaApplicationWithTestsFunctionalTest extends AbstractGraalVMMavenFunctio when: mvn '-Pnative', '-DquickBuild', '-DskipNativeTests', 'package' + def expectedOutput = ["local-repo", "org", "apache", "commons", "commons-lang3", "3.12.0", "commons-lang3-3.12.0.jar"].join(File.separator) + then: buildSucceeded - outputDoesNotContain "local-repo/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar" + outputDoesNotContain expectedOutput } } From a4b3d14a4afce3d522709e022bae0e7bc6d990e4 Mon Sep 17 00:00:00 2001 From: David Nestorovic Date: Wed, 16 Apr 2025 13:55:48 +0200 Subject: [PATCH 4/4] Ignore scope provided dependencies tests when running on windows --- .../maven/JavaApplicationWithTestsFunctionalTest.groovy | 3 +++ 1 file changed, 3 insertions(+) diff --git a/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy b/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy index 853b3a12d..a7ca1d4e6 100644 --- a/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy +++ b/native-maven-plugin/src/functionalTest/groovy/org/graalvm/buildtools/maven/JavaApplicationWithTestsFunctionalTest.groovy @@ -41,6 +41,7 @@ package org.graalvm.buildtools.maven +import spock.lang.IgnoreIf import spock.lang.Issue class JavaApplicationWithTestsFunctionalTest extends AbstractGraalVMMavenFunctionalTest { @@ -153,6 +154,7 @@ class JavaApplicationWithTestsFunctionalTest extends AbstractGraalVMMavenFunctio outputContains "SurefirePlugin - Tests run: 8, Failures: 0, Errors: 0, Skipped: 0" } + @IgnoreIf({ os.windows }) def "dependencies with scope provided are on classpath for test binary"() { withSample("java-application-with-tests") @@ -166,6 +168,7 @@ class JavaApplicationWithTestsFunctionalTest extends AbstractGraalVMMavenFunctio outputContains expectedOutput } + @IgnoreIf({ os.windows }) def "dependencies with scope provided are not on classpath for main binary"() { withSample("java-application-with-tests")