diff --git a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java index 5644fe2a..4dfac9de 100644 --- a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java +++ b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java @@ -217,6 +217,9 @@ public abstract class AbstractInvokerMojo extends AbstractMojo { @Parameter(defaultValue = "true") private boolean cloneClean; + @Parameter + private List collectedProjects; + /** * A single POM to build, skipping any scanning parameters and behavior. * @@ -802,11 +805,6 @@ public void execute() throws MojoExecutionException, MojoFailureException { handleScriptRunnerWithScriptClassPath(); - Collection collectedProjects = new LinkedHashSet<>(); - for (BuildJob buildJob : buildJobs) { - collectProjects(projectsDirectory, buildJob.getProject(), collectedProjects, true); - } - File projectsDir = projectsDirectory; if (cloneProjectsTo == null && "maven-plugin".equals(project.getPackaging())) { @@ -826,6 +824,13 @@ public void execute() throws MojoExecutionException, MojoFailureException { } if (cloneProjectsTo != null) { + Collection collectedProjects = this.collectedProjects; + if (collectedProjects == null) { + collectedProjects = new LinkedHashSet<>(); + for (BuildJob buildJob : buildJobs) { + collectProjects(projectsDirectory, buildJob.getProject(), collectedProjects, true); + } + } cloneProjects(collectedProjects); addMissingDotMvnDirectory(cloneProjectsTo, buildJobs); projectsDir = cloneProjectsTo; @@ -1088,7 +1093,7 @@ private boolean isNotEmpty(String s) { * * @param projectPaths The paths to the projects to clone, relative to the projects directory, must not be * null nor contain null elements. - * @throws org.apache.maven.plugin.MojoExecutionException If the the projects could not be copied/filtered. + * @throws org.apache.maven.plugin.MojoExecutionException If the projects could not be copied/filtered. */ private void cloneProjects(Collection projectPaths) throws MojoExecutionException { if (!cloneProjectsTo.mkdirs() && cloneClean) {