Skip to content

Classpath is duplicated in native tests with incompatible versions, preventing upgrade to newer JUnit versions #305

Open
@sbrannen

Description

@sbrannen

Overview

When I run the java-application-with-tests locally I see that the classpath contains JUnit artifacts twice. In this particular case, they are the same versions.

[INFO] Executing: /opt/graalvm/graalvm-ce-java17-22.2.0/Contents/Home/bin/native-image -cp /Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target/classes:/Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target/test-classes:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-launcher/1.8.1/junit-platform-launcher-1.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-engine/1.8.1/junit-platform-engine-1.8.1.jar:/Users/sbrannen/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-commons/1.8.1/junit-platform-commons-1.8.1.jar:/Users/sbrannen/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-reporting/1.8.1/junit-platform-reporting-1.8.1.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/native-maven-plugin/0.9.14-SNAPSHOT/native-maven-plugin-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-launcher/1.8.1/junit-platform-launcher-1.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-engine/1.8.1/junit-platform-engine-1.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-commons/1.8.1/junit-platform-commons-1.8.1.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/junit-platform-native/0.9.14-SNAPSHOT/junit-platform-native-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-console/1.8.1/junit-platform-console-1.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-reporting/1.8.1/junit-platform-reporting-1.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/utils/0.9.14-SNAPSHOT/utils-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/graalvm-reachability-metadata/0.9.14-SNAPSHOT/graalvm-reachability-metadata-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/junit-platform-native/0.9.14-SNAPSHOT/junit-platform-native-0.9.14-SNAPSHOT.jar --no-fallback -H:Path=/Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target -H:Name=native-tests -Djunit.platform.listeners.uid.tracking.output.dir=/Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target/test-ids -H:Class=org.graalvm.junit.platform.NativeImageJUnitLauncher --features=org.graalvm.junit.platform.JUnitPlatformFeature

If I change the JUnit versions to 5.9.0/1.9.0, I then see this:

[INFO] Executing: /opt/graalvm/graalvm-ce-java17-22.2.0/Contents/Home/bin/native-image -cp /Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target/classes:/Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target/test-classes:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.9.0/junit-jupiter-api-5.9.0.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.9.0/junit-jupiter-params-5.9.0.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-launcher/1.9.0/junit-platform-launcher-1.9.0.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-engine/1.9.0/junit-platform-engine-1.9.0.jar:/Users/sbrannen/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-commons/1.9.0/junit-platform-commons-1.9.0.jar:/Users/sbrannen/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.9.0/junit-jupiter-engine-5.9.0.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter/5.9.0/junit-jupiter-5.9.0.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-reporting/1.9.0/junit-platform-reporting-1.9.0.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/native-maven-plugin/0.9.14-SNAPSHOT/native-maven-plugin-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-launcher/1.9.0/junit-platform-launcher-1.9.0.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-engine/1.9.0/junit-platform-engine-1.9.0.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-commons/1.9.0/junit-platform-commons-1.9.0.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/junit-platform-native/0.9.14-SNAPSHOT/junit-platform-native-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-console/1.8.1/junit-platform-console-1.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/platform/junit-platform-reporting/1.8.1/junit-platform-reporting-1.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar:/Users/sbrannen/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/utils/0.9.14-SNAPSHOT/utils-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/graalvm-reachability-metadata/0.9.14-SNAPSHOT/graalvm-reachability-metadata-0.9.14-SNAPSHOT.jar:/Users/sbrannen/.m2/repository/org/graalvm/buildtools/junit-platform-native/0.9.14-SNAPSHOT/junit-platform-native-0.9.14-SNAPSHOT.jar --no-fallback -H:Path=/Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target -H:Name=native-tests -Djunit.platform.listeners.uid.tracking.output.dir=/Users/sbrannen/source/native-build-tools/samples/java-application-with-tests/target/test-ids -H:Class=org.graalvm.junit.platform.NativeImageJUnitLauncher --features=org.graalvm.junit.platform.JUnitPlatformFeature

So, the 5.9.0/1.9.0 versions I declared actually get used, because they are first in the classpath, but we still should not include the 5.8.1/1.9.1 versions of JUnit artifacts in the classpath.

Note that this was tested with the Maven support. I did not verify if the same thing happens with the Gradle support.

Related Issues

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingjunit-supportRelated to JUnit Support projectmaven-pluginRelated to Maven plugin

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions