From f8ed4f04b017701cb6d35203fed0a7ba3e91d7a9 Mon Sep 17 00:00:00 2001 From: Alexey Loubyansky Date: Fri, 21 May 2021 10:18:26 +0200 Subject: [PATCH] Turn the PathsCollection back into a class to not break binary backward compatibility --- .../deployment/dev/IDEDevModeMain.java | 10 +- .../bootstrap/model/PathsCollection.java | 244 ++++++------------ .../bootstrap/model/gradle/SourceSet.java | 7 +- .../model/gradle/impl/SourceSetImpl.java | 21 +- .../io/quarkus/bootstrap/util/PathsUtils.java | 16 ++ .../io/quarkus/bootstrap/IDELauncherImpl.java | 5 +- .../bootstrap/util/QuarkusModelHelper.java | 15 +- .../builder/QuarkusModelBuilderTest.java | 12 +- .../jacoco/deployment/JacocoProcessor.java | 11 +- .../test/junit/IntegrationTestUtil.java | 6 +- .../test/junit/QuarkusTestExtension.java | 6 +- 11 files changed, 149 insertions(+), 204 deletions(-) create mode 100644 independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/util/PathsUtils.java diff --git a/core/deployment/src/main/java/io/quarkus/deployment/dev/IDEDevModeMain.java b/core/deployment/src/main/java/io/quarkus/deployment/dev/IDEDevModeMain.java index 0c7bae528ccc0..02d8dda3b9a0d 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/dev/IDEDevModeMain.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/dev/IDEDevModeMain.java @@ -1,6 +1,7 @@ package io.quarkus.deployment.dev; import java.io.Closeable; +import java.io.File; import java.nio.file.Path; import java.util.Collections; import java.util.LinkedHashSet; @@ -20,6 +21,7 @@ import io.quarkus.bootstrap.resolver.AppModelResolverException; import io.quarkus.bootstrap.resolver.maven.workspace.LocalProject; import io.quarkus.bootstrap.resolver.maven.workspace.LocalWorkspace; +import io.quarkus.bootstrap.util.PathsUtils; import io.quarkus.bootstrap.util.QuarkusModelHelper; import io.quarkus.bootstrap.utils.BuildToolHelper; @@ -97,8 +99,8 @@ private DevModeContext.ModuleInfo toModule(WorkspaceModule module) throws Bootst module.getArtifactCoords().getArtifactId(), module.getArtifactCoords().getClassifier()); final Set sourceParents = new LinkedHashSet<>(); - for (Path srcDir : module.getSourceSourceSet().getSourceDirectories()) { - sourceParents.add(srcDir.getParent()); + for (File srcDir : module.getSourceSourceSet().getSourceDirectories()) { + sourceParents.add(srcDir.getParentFile().toPath()); } String resourceDirectory = null; if (!module.getSourceSet().getResourceDirectories().isEmpty()) { @@ -109,9 +111,9 @@ private DevModeContext.ModuleInfo toModule(WorkspaceModule module) throws Bootst .setAppArtifactKey(key) .setName(module.getArtifactCoords().getArtifactId()) .setProjectDirectory(module.getProjectRoot().getPath()) - .setSourcePaths(module.getSourceSourceSet().getSourceDirectories()) + .setSourcePaths(PathsUtils.toPathsCollection(module.getSourceSourceSet().getSourceDirectories())) .setClassesPath(QuarkusModelHelper.getClassPath(module).toAbsolutePath().toString()) - .setResourcePaths(module.getSourceSourceSet().getResourceDirectories()) + .setResourcePaths(PathsUtils.toPathsCollection(module.getSourceSourceSet().getResourceDirectories())) .setResourcesOutputPath(resourceDirectory) .setSourceParents(PathsCollection.from(sourceParents)) .setPreBuildOutputDir(module.getBuildDir().toPath().resolve("generated-sources").toAbsolutePath().toString()) diff --git a/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/PathsCollection.java b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/PathsCollection.java index 3278df65e263c..5dd33eabf04a6 100644 --- a/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/PathsCollection.java +++ b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/PathsCollection.java @@ -12,87 +12,20 @@ import java.util.Iterator; import java.util.List; -/** - * A specific collection meant to be used to manipulate {@code Path}s. - */ -public interface PathsCollection extends Iterable { - - /** - * @return {@code true} if the collection is empty, {@code false} otherwise. - */ - boolean isEmpty(); - - /** - * @return the size of the collection id paths. - */ - int size(); - - /** - * @return {@code true} if the collection contains one path. {@code false} otherwise. - */ - boolean isSinglePath(); - - /** - * @return the only path that could be found into the collection. - * @throws IllegalStateException if there is no path or there are more than one paths into the collection. - */ - Path getSinglePath(); - - /** - * @param path the path to check. - * @return {@code true} if the collection contains the given path, {@code false} otherwise. - */ - boolean contains(Path path); - - /** - * Appends the given paths to the collection. - * - * @param paths the paths to append. - * @return a new collection with the appended paths. - */ - PathsCollection add(Path... paths); - - /** - * Adds the given paths at the beginning of the collection - * - * @param paths the paths to add. - * @return a new collection with the added paths. - */ - PathsCollection addFirst(Path... paths); - - /** - * Adds the given paths at the beginning of the collection - * - * @param paths the paths to add. - * @return a new collection with the added paths. - */ - PathsCollection addAllFirst(Iterable paths); - - /** - * Gives a path of the collection for which a file could found at the given relative location. - * - * @param path the relative location for which we want to find a matching root path. - * @return the root path of the collection that could match with the given location, {@code null} otherwise. - */ - Path resolveExistingOrNull(String path); - - /** - * @return the content of the collection as a {@link List}. - */ - Collection toList(); - - static PathsCollection from(Iterable paths) { +public class PathsCollection implements Iterable, Serializable { + + public static PathsCollection from(Iterable paths) { final List list = new ArrayList<>(); paths.forEach(list::add); - return new Default(list); + return new PathsCollection(list); } - static PathsCollection of(Path... paths) { - return new Default(Arrays.asList(paths)); + public static PathsCollection of(Path... paths) { + return new PathsCollection(Arrays.asList(paths)); } - class Builder { - private final List paths = new ArrayList<>(); + public static class Builder { + private List paths = new ArrayList<>(); private Builder() { } @@ -107,117 +40,108 @@ public boolean contains(Path p) { } public PathsCollection build() { - return new Default(paths); + return new PathsCollection(paths); } } - static Builder builder() { + public static Builder builder() { return new Builder(); } - class Default implements PathsCollection, Serializable { - private List paths; + private List paths; - private Default(List paths) { - this.paths = Collections.unmodifiableList(paths); - } + private PathsCollection(List paths) { + this.paths = Collections.unmodifiableList(paths); + } - @Override - public boolean isEmpty() { - return paths.isEmpty(); - } + public boolean isEmpty() { + return paths.isEmpty(); + } - @Override - public int size() { - return paths.size(); - } + public int size() { + return paths.size(); + } - @Override - public boolean isSinglePath() { - return paths.size() == 1; - } + public boolean isSinglePath() { + return paths.size() == 1; + } - @Override - public Path getSinglePath() { - if (paths.size() != 1) { - throw new IllegalStateException( - "Paths collection expected to contain a single path but contains " + paths.size()); - } - return paths.get(0); + public Path getSinglePath() { + if (paths.size() != 1) { + throw new IllegalStateException("Paths collection expected to contain a single path but contains " + paths.size()); } + return paths.get(0); + } - @Override - public Iterator iterator() { - return paths.iterator(); - } + @Override + public Iterator iterator() { + return paths.iterator(); + } - @Override - public boolean contains(Path path) { - return paths.contains(path); - } + public boolean contains(Path path) { + return paths.contains(path); + } - @Override - public PathsCollection add(Path... paths) { - final List list = new ArrayList<>(this.paths.size() + paths.length); - list.addAll(this.paths); - list.addAll(Arrays.asList(paths)); - return new Default(list); + public PathsCollection add(Path... paths) { + final List list = new ArrayList<>(this.paths.size() + paths.length); + list.addAll(this.paths); + for (int i = 0; i < paths.length; ++i) { + list.add(paths[i]); } + return new PathsCollection(list); + } - @Override - public PathsCollection addFirst(Path... paths) { - final List list = new ArrayList<>(this.paths.size() + paths.length); - list.addAll(Arrays.asList(paths)); - list.addAll(this.paths); - return new Default(list); + public PathsCollection addFirst(Path... paths) { + final List list = new ArrayList<>(this.paths.size() + paths.length); + for (int i = 0; i < paths.length; ++i) { + list.add(paths[i]); } + list.addAll(this.paths); + return new PathsCollection(list); + } - @Override - public PathsCollection addAllFirst(Iterable i) { - final List list = new ArrayList<>(); - i.forEach(list::add); - list.addAll(paths); - return new Default(list); - } + public PathsCollection addAllFirst(Iterable i) { + final List list = new ArrayList<>(); + i.forEach(list::add); + paths.forEach(list::add); + return new PathsCollection(list); + } - @Override - public Path resolveExistingOrNull(String path) { - for (Path p : paths) { - final Path resolved = p.resolve(path); - if (Files.exists(resolved)) { - return resolved; - } + public Path resolveExistingOrNull(String path) { + for (Path p : paths) { + final Path resolved = p.resolve(path); + if (Files.exists(resolved)) { + return resolved; } - return null; } + return null; + } - @Override - public Collection toList() { - return new ArrayList<>(paths); - } + @Override + public String toString() { + final StringBuilder buf = new StringBuilder(); + buf.append("[paths: "); + forEach(p -> buf.append(p).append(';')); + return buf.append(']').toString(); + } - @Override - public String toString() { - final StringBuilder buf = new StringBuilder(); - buf.append("[paths: "); - forEach(p -> buf.append(p).append(';')); - return buf.append(']').toString(); + private void writeObject(java.io.ObjectOutputStream out) throws IOException { + out.writeInt(paths.size()); + for (Path p : paths) { + out.writeUTF(p.toAbsolutePath().toString()); } + } - private void writeObject(java.io.ObjectOutputStream out) throws IOException { - out.writeInt(paths.size()); - for (Path p : paths) { - out.writeUTF(p.toAbsolutePath().toString()); - } + private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { + final int pathsTotal = in.readInt(); + List paths = new ArrayList<>(pathsTotal); + for (int i = 0; i < pathsTotal; ++i) { + paths.add(Paths.get(in.readUTF())); } + this.paths = Collections.unmodifiableList(paths); + } - private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { - final int pathsTotal = in.readInt(); - List paths = new ArrayList<>(pathsTotal); - for (int i = 0; i < pathsTotal; ++i) { - paths.add(Paths.get(in.readUTF())); - } - this.paths = Collections.unmodifiableList(paths); - } + public Collection toList() { + return new ArrayList<>(paths); } -} +} \ No newline at end of file diff --git a/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/SourceSet.java b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/SourceSet.java index a8d6670f5a81f..ddb6cb24965de 100644 --- a/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/SourceSet.java +++ b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/SourceSet.java @@ -1,10 +1,11 @@ package io.quarkus.bootstrap.model.gradle; -import io.quarkus.bootstrap.model.PathsCollection; +import java.io.File; +import java.util.Set; public interface SourceSet { - PathsCollection getSourceDirectories(); + Set getSourceDirectories(); - PathsCollection getResourceDirectories(); + Set getResourceDirectories(); } diff --git a/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/impl/SourceSetImpl.java b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/impl/SourceSetImpl.java index b562e2cbe9b58..c10232672df48 100644 --- a/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/impl/SourceSetImpl.java +++ b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/gradle/impl/SourceSetImpl.java @@ -1,25 +1,20 @@ package io.quarkus.bootstrap.model.gradle.impl; -import io.quarkus.bootstrap.model.PathsCollection; import io.quarkus.bootstrap.model.gradle.SourceSet; import java.io.File; import java.io.Serializable; -import java.nio.file.Path; import java.util.Collections; -import java.util.LinkedHashSet; import java.util.Set; import java.util.stream.Collectors; public class SourceSetImpl implements SourceSet, Serializable { - private final PathsCollection sourceDirectories; - private final PathsCollection resourceDirectories; + private final Set sourceDirectories; + private final Set resourceDirectories; public SourceSetImpl(Set sourceDirectories, Set resourceDirectories) { - this.sourceDirectories = PathsCollection - .from(sourceDirectories.stream().map(File::toPath).collect(Collectors.toCollection(LinkedHashSet::new))); - this.resourceDirectories = PathsCollection - .from(resourceDirectories.stream().map(File::toPath).collect(Collectors.toCollection(LinkedHashSet::new))); + this.sourceDirectories = sourceDirectories; + this.resourceDirectories = resourceDirectories; } public SourceSetImpl(Set sourceDirectories) { @@ -27,22 +22,22 @@ public SourceSetImpl(Set sourceDirectories) { } @Override - public PathsCollection getSourceDirectories() { + public Set getSourceDirectories() { return sourceDirectories; } @Override - public PathsCollection getResourceDirectories() { + public Set getResourceDirectories() { return resourceDirectories; } @Override public String toString() { return "SourceSetImpl{" + - "sourceDirectories=" + sourceDirectories.toList().stream().map(Path::toString).collect(Collectors.joining(":")) + "sourceDirectories=" + sourceDirectories.stream().map(File::toString).collect(Collectors.joining(":")) + ", resourceDirectories=" - + resourceDirectories.toList().stream().map(Path::toString).collect(Collectors.joining(":")) + + + resourceDirectories.stream().map(File::toString).collect(Collectors.joining(":")) + '}'; } } diff --git a/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/util/PathsUtils.java b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/util/PathsUtils.java new file mode 100644 index 0000000000000..bbae89af02dd6 --- /dev/null +++ b/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/util/PathsUtils.java @@ -0,0 +1,16 @@ +package io.quarkus.bootstrap.util; + +import io.quarkus.bootstrap.model.PathsCollection; +import java.io.File; +import java.util.Collection; + +public class PathsUtils { + + public static PathsCollection toPathsCollection(Collection c) { + final PathsCollection.Builder builder = PathsCollection.builder(); + for (File f : c) { + builder.add(f.toPath()); + } + return builder.build(); + } +} diff --git a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/IDELauncherImpl.java b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/IDELauncherImpl.java index fda5b2bfe47e4..d8b51186fe22a 100644 --- a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/IDELauncherImpl.java +++ b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/IDELauncherImpl.java @@ -10,6 +10,7 @@ import io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext; import io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver; import io.quarkus.bootstrap.resolver.maven.workspace.LocalProject; +import io.quarkus.bootstrap.util.PathsUtils; import io.quarkus.bootstrap.util.QuarkusModelHelper; import io.quarkus.bootstrap.utils.BuildToolHelper; import java.io.Closeable; @@ -52,10 +53,10 @@ public static Closeable launch(Path classesDir, Map context) { for (WorkspaceModule additionalModule : quarkusModel.getWorkspace().getAllModules()) { if (!additionalModule.getArtifactCoords().equals(launchingModule.getArtifactCoords())) { builder.addAdditionalApplicationArchive(new AdditionalDependency( - additionalModule.getSourceSet().getSourceDirectories(), + PathsUtils.toPathsCollection(additionalModule.getSourceSet().getSourceDirectories()), true, false)); builder.addAdditionalApplicationArchive(new AdditionalDependency( - additionalModule.getSourceSet().getResourceDirectories(), + PathsUtils.toPathsCollection(additionalModule.getSourceSet().getResourceDirectories()), true, false)); } } diff --git a/independent-projects/bootstrap/gradle-resolver/src/main/java/io/quarkus/bootstrap/util/QuarkusModelHelper.java b/independent-projects/bootstrap/gradle-resolver/src/main/java/io/quarkus/bootstrap/util/QuarkusModelHelper.java index 91ab2c0e9befe..fa47dee5f4c99 100644 --- a/independent-projects/bootstrap/gradle-resolver/src/main/java/io/quarkus/bootstrap/util/QuarkusModelHelper.java +++ b/independent-projects/bootstrap/gradle-resolver/src/main/java/io/quarkus/bootstrap/util/QuarkusModelHelper.java @@ -88,8 +88,9 @@ public static QuarkusModel deserializeQuarkusModel(Path modelPath) throws Bootst public static Path getClassPath(WorkspaceModule model) throws BootstrapGradleException { // TODO handle multiple class directory - final Optional classDir = model.getSourceSet().getSourceDirectories().toList().stream() - .filter(Files::exists) + final Optional classDir = model.getSourceSet().getSourceDirectories().stream() + .filter(File::exists) + .map(File::toPath) .findFirst(); if (!classDir.isPresent()) { throw new BootstrapGradleException("Failed to locate class directory"); @@ -144,11 +145,13 @@ public static AppModel convert(QuarkusModel model, AppArtifact appArtifact) thro if (!appArtifact.isResolved()) { PathsCollection.Builder paths = PathsCollection.builder(); WorkspaceModule module = model.getWorkspace().getMainModule(); - module.getSourceSet().getSourceDirectories().toList().stream() - .filter(Files::exists) + module.getSourceSet().getSourceDirectories().stream() + .filter(File::exists) + .map(File::toPath) .forEach(paths::add); - module.getSourceSet().getResourceDirectories().toList().stream() - .filter(Files::exists) + module.getSourceSet().getResourceDirectories().stream() + .filter(File::exists) + .map(File::toPath) .forEach(paths::add); appArtifact.setPaths(paths.build()); } diff --git a/integration-tests/gradle/src/test/java/io/quarkus/gradle/builder/QuarkusModelBuilderTest.java b/integration-tests/gradle/src/test/java/io/quarkus/gradle/builder/QuarkusModelBuilderTest.java index ca01a9a7eaf78..17ee64718fdf5 100644 --- a/integration-tests/gradle/src/test/java/io/quarkus/gradle/builder/QuarkusModelBuilderTest.java +++ b/integration-tests/gradle/src/test/java/io/quarkus/gradle/builder/QuarkusModelBuilderTest.java @@ -73,14 +73,14 @@ private void assertWorkspace(WorkspaceModule workspaceModule, File projectDir) { final SourceSet sourceSet = workspaceModule.getSourceSet(); assertNotNull(sourceSet); assertTrue(sourceSet.getResourceDirectories().isEmpty()); - assertThat(sourceSet.getSourceDirectories().toList()).containsAnyOf( - new File(projectDir, "build/classes/java/main").toPath(), - new File(projectDir, "build/classes/java/test").toPath()); + assertThat(sourceSet.getSourceDirectories()).containsAnyOf( + new File(projectDir, "build/classes/java/main"), + new File(projectDir, "build/classes/java/test")); final SourceSet sourceSourceSet = workspaceModule.getSourceSourceSet(); - assertThat(sourceSourceSet.getResourceDirectories().toList()) - .containsAnyOf(new File(projectDir, "src/main/resources").toPath()); + assertThat(sourceSourceSet.getResourceDirectories()) + .containsAnyOf(new File(projectDir, "src/main/resources")); assertEquals(5, sourceSourceSet.getSourceDirectories().size()); - assertThat(sourceSourceSet.getSourceDirectories().toList()).contains(new File(projectDir, "src/main/java").toPath()); + assertThat(sourceSourceSet.getSourceDirectories()).contains(new File(projectDir, "src/main/java")); } private File getResourcesProject(String projectName) throws URISyntaxException, IOException { diff --git a/test-framework/jacoco/deployment/src/main/java/io/quarkus/jacoco/deployment/JacocoProcessor.java b/test-framework/jacoco/deployment/src/main/java/io/quarkus/jacoco/deployment/JacocoProcessor.java index 32d51e5b67033..542bd12ef094e 100644 --- a/test-framework/jacoco/deployment/src/main/java/io/quarkus/jacoco/deployment/JacocoProcessor.java +++ b/test-framework/jacoco/deployment/src/main/java/io/quarkus/jacoco/deployment/JacocoProcessor.java @@ -3,7 +3,6 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; import java.util.HashSet; @@ -131,12 +130,12 @@ public byte[] apply(String className, byte[] bytes) { QuarkusModel model = BuildToolHelper.enableGradleAppModelForDevMode(targetdir.toPath()); for (WorkspaceModule i : model.getWorkspace().getAllModules()) { info.savedData.add(new File(i.getBuildDir(), config.dataFile).getAbsolutePath()); - for (Path src : i.getSourceSourceSet().getSourceDirectories()) { - sources.add(src.toAbsolutePath().toString()); + for (File src : i.getSourceSourceSet().getSourceDirectories()) { + sources.add(src.getAbsolutePath()); } - for (Path classesDir : i.getSourceSet().getSourceDirectories()) { - if (Files.isDirectory(classesDir)) { - for (final File file : FileUtils.getFiles(classesDir.toFile(), includes, excludes, + for (File classesDir : i.getSourceSet().getSourceDirectories()) { + if (classesDir.isDirectory()) { + for (final File file : FileUtils.getFiles(classesDir, includes, excludes, true)) { if (file.getName().endsWith(".class")) { classes.add(file.getAbsolutePath()); diff --git a/test-framework/junit5/src/main/java/io/quarkus/test/junit/IntegrationTestUtil.java b/test-framework/junit5/src/main/java/io/quarkus/test/junit/IntegrationTestUtil.java index c01bb57fea312..c335da0df12ed 100644 --- a/test-framework/junit5/src/main/java/io/quarkus/test/junit/IntegrationTestUtil.java +++ b/test-framework/junit5/src/main/java/io/quarkus/test/junit/IntegrationTestUtil.java @@ -32,6 +32,7 @@ import io.quarkus.bootstrap.app.QuarkusBootstrap; import io.quarkus.bootstrap.model.PathsCollection; import io.quarkus.bootstrap.model.gradle.QuarkusModel; +import io.quarkus.bootstrap.util.PathsUtils; import io.quarkus.bootstrap.utils.BuildToolHelper; import io.quarkus.datasource.deployment.spi.DevServicesDatasourceResultBuildItem; import io.quarkus.runtime.configuration.ProfileManager; @@ -184,8 +185,9 @@ static Map handleDevDb(ExtensionContext context) throws Exceptio if (System.getProperty(BootstrapConstants.SERIALIZED_TEST_APP_MODEL) == null) { QuarkusModel model = BuildToolHelper.enableGradleAppModelForTest(projectRoot); if (model != null) { - final PathsCollection classDirectories = model.getWorkspace().getMainModule().getSourceSet() - .getSourceDirectories(); + final PathsCollection classDirectories = PathsUtils + .toPathsCollection(model.getWorkspace().getMainModule().getSourceSet() + .getSourceDirectories()); for (Path classes : classDirectories) { if (Files.exists(classes) && !rootBuilder.contains(classes)) { rootBuilder.add(classes); diff --git a/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java b/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java index df5f5b5315c28..4122ebbad410d 100644 --- a/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java +++ b/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java @@ -79,6 +79,7 @@ import io.quarkus.bootstrap.model.PathsCollection; import io.quarkus.bootstrap.model.gradle.QuarkusModel; import io.quarkus.bootstrap.runner.Timing; +import io.quarkus.bootstrap.util.PathsUtils; import io.quarkus.bootstrap.utils.BuildToolHelper; import io.quarkus.builder.BuildChainBuilder; import io.quarkus.builder.BuildContext; @@ -278,8 +279,9 @@ private ExtensionState doJavaStart(ExtensionContext context, Class