diff --git a/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java b/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java index e35e67179..dfc6ffdf9 100644 --- a/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java +++ b/native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java @@ -410,7 +410,7 @@ private void configureNativeConfigurationRepo(ExtensionAware graalvmNative) { configurationRepository.getEnabled().convention(false); configurationRepository.getUri().convention(configurationRepository.getVersion().map(v -> { try { - return new URI("https://github.com/graalvm/jvm-reachability-metadata/releases/download/" + v + "/jvm-reachability-metadata-" + v + ".zip"); + return new URI("https://github.com/graalvm/graalvm-reachability-metadata/releases/download/" + v + "/graalvm-reachability-metadata-" + v + ".zip"); } catch (URISyntaxException e) { return null; } @@ -471,7 +471,7 @@ public void registerTestBinary(Project project, injectTestPluginDependencies(project, graalExtension.getTestSupport()); TaskProvider testImageBuilder = tasks.named(deriveTaskName(name, "native", "Compile"), BuildNativeImageTask.class, task -> { - task.setOnlyIf(t -> graalExtension.getTestSupport().get()); + task.setOnlyIf(t -> graalExtension.getTestSupport().get() && testListDirectory.getAsFile().get().exists()); task.getTestListDirectory().set(testListDirectory); testTask.get(); ConfigurableFileCollection testList = project.getObjects().fileCollection(); @@ -488,7 +488,7 @@ public void registerTestBinary(Project project, tasks.named(isPrimaryTest ? NATIVE_TEST_TASK_NAME : "native" + capitalize(name), NativeRunTask.class, task -> { task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP); - task.setOnlyIf(t -> graalExtension.getTestSupport().get()); + task.setOnlyIf(t -> graalExtension.getTestSupport().get() && testListDirectory.getAsFile().get().exists()); }); } 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 70508e656..013ace42f 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 @@ -60,7 +60,6 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.net.URISyntaxException; -import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -109,6 +108,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { } configureEnvironment(); if (!hasTests()) { + logger.info("Skipped native-image tests since there are no test classes."); return; } @@ -169,8 +169,8 @@ private void configureEnvironment() { private boolean hasTests() { Path testOutputPath = Paths.get(project.getBuild().getTestOutputDirectory()); if (Files.exists(testOutputPath) && Files.isDirectory(testOutputPath)) { - try (DirectoryStream directory = Files.newDirectoryStream(testOutputPath)) { - return directory.iterator().hasNext(); + try (Stream testClasses = Files.walk(testOutputPath)) { + return testClasses.anyMatch(p -> p.getFileName().toString().endsWith(".class")); } catch (IOException ex) { throw new IllegalStateException(ex); }