From 9af90f128ca7c2180ed419724733029cae923c66 Mon Sep 17 00:00:00 2001 From: Alexey Loubyansky Date: Fri, 4 Mar 2022 09:56:47 +0100 Subject: [PATCH] Skip modules with no pom.xml during workspace discovery logging a warning --- .../maven/workspace/WorkspaceLoader.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/workspace/WorkspaceLoader.java b/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/workspace/WorkspaceLoader.java index 97c6583ffc2eb..feae8f9ac560c 100644 --- a/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/workspace/WorkspaceLoader.java +++ b/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/workspace/WorkspaceLoader.java @@ -7,6 +7,7 @@ import io.quarkus.bootstrap.resolver.maven.options.BootstrapMavenOptions; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; @@ -22,9 +23,12 @@ import org.apache.maven.model.resolution.ModelResolver; import org.apache.maven.model.resolution.UnresolvableModelException; import org.apache.maven.model.resolution.WorkspaceModelResolver; +import org.jboss.logging.Logger; public class WorkspaceLoader implements WorkspaceModelResolver { + private static final Logger log = Logger.getLogger(WorkspaceLoader.class); + private static final String POM_XML = "pom.xml"; static final Model readModel(Path pom) throws BootstrapMavenException { @@ -32,6 +36,12 @@ static final Model readModel(Path pom) throws BootstrapMavenException { final Model model = ModelUtils.readModel(pom); model.setPomFile(pom.toFile()); return model; + } catch (NoSuchFileException e) { + // some projects may be missing pom.xml relying on Maven extensions (e.g. tycho-maven-plugin) to build them, + // which we don't support in this workspace loader + log.warn("Module(s) under " + pom.getParent() + " will be handled as thirdparty dependencies because " + pom + + " does not exist"); + return null; } catch (IOException e) { throw new BootstrapMavenException("Failed to read " + pom, e); } @@ -122,8 +132,14 @@ private LocalProject loadAndCacheProject(Path pomFile) throws BootstrapMavenExce } catch (Exception e) { throw new BootstrapMavenException("Failed to resolve the effective model for " + pomFile, e); } + } else if (cachedRawModel != null) { + project = new LocalProject(cachedRawModel, workspace); } else { - project = new LocalProject(cachedRawModel == null ? readModel(pomFile) : cachedRawModel, workspace); + Model model = readModel(pomFile); + if (model == null) { + return null; + } + project = new LocalProject(model, workspace); } projectCache.put(pomFile.getParent(), project); return project; @@ -152,6 +168,9 @@ private LocalProject loadProject(final Path projectPom, String skipModule) throw : loadProject(parentPom, parentPom.getParent().relativize(projectPom.getParent()).toString()); final LocalProject project = project(projectPom); + if (project == null) { + return null; + } if (parentProject != null) { parentProject.modules.add(project); } @@ -186,7 +205,9 @@ private LocalProject loadProjectModules(LocalProject project, String skipModule) continue; } final LocalProject childProject = project(project.getDir().resolve(module).resolve(POM_XML)); - project.modules.add(loadProjectModules(childProject, null)); + if (childProject != null) { + project.modules.add(loadProjectModules(childProject, null)); + } } } return project;