From 2a1523012b48f532496eb28911bfb69237f102d5 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Sun, 20 Aug 2023 13:32:46 -0400 Subject: [PATCH] prevent sub-group matching for purge --- .../inteligr8/maven/ban/PurgeRepoMojo.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java b/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java index 29eb45b..9ec8f55 100644 --- a/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java +++ b/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java @@ -219,14 +219,27 @@ public class PurgeRepoMojo extends AbstractMojo { Files.list(repoPath.resolve(groupPath)).forEach(new Consumer() { @Override - public void accept(Path t) { + public void accept(Path fullArtifactPath) { if (artifactPattern == null) { - paths.add(repoPath.relativize(t)); + // these may include sub-groups and not just artifacts + // which will lead to paths with artifacts as versions + // so we are looping through versions to see if it is indeed an artifact + try { + Files.list(fullArtifactPath).findFirst().ifPresent(new Consumer() { + @Override + public void accept(Path fullVersionPath) { + if (Files.exists(fullVersionPath.resolve("_remote.repositories"))) + paths.add(repoPath.relativize(fullArtifactPath)); + } + }); + } catch (IOException ie) { + getLog().error(ie.getMessage(), ie); + } } else { - Matcher matcher = artifactPattern.matcher(t.getFileName().toString()); + Matcher matcher = artifactPattern.matcher(fullArtifactPath.getFileName().toString()); if (matcher.matches()) { - getLog().debug("The artifact directory '" + t.getFileName() + "' qualifies as included"); - paths.add(repoPath.relativize(t)); + getLog().debug("The artifact directory '" + fullArtifactPath.getFileName() + "' qualifies as included"); + paths.add(repoPath.relativize(fullArtifactPath)); } } }