diff --git a/nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/CreateClusterMojo.java b/nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/CreateClusterMojo.java index 4ddbc965..2f782701 100644 --- a/nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/CreateClusterMojo.java +++ b/nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/CreateClusterMojo.java @@ -20,6 +20,8 @@ */ import java.io.File; import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; @@ -83,12 +85,13 @@ public void execute() throws MojoExecutionException, MojoFailureException { if (!clusterBuildDir.exists()) { clusterBuildDir.mkdirs(); } - + // relativize to get path from target + Path relativizedfolder = Paths.get(session.getCurrentProject().getBuild().getDirectory()).relativize(nbmBuildDir.toPath()); List reactorProjects = session.getProjects(); if (reactorProjects != null && !reactorProjects.isEmpty()) { for (MavenProject proj : reactorProjects) { - - File nbmDir = new File(nbmBuildDir, "clusters"); + // nbmDir scan for each reactor project + File nbmDir = new File(proj.getBuild().getDirectory(), relativizedfolder.toString() + File.separator + "clusters"); if (nbmDir.exists()) { Copy copyTask = (Copy) antProject.createTask("copy"); copyTask.setTodir(clusterBuildDir); diff --git a/nbm-maven-plugin/src/test/java/org/apache/netbeans/nbm/CreateClusterMojoTest.java b/nbm-maven-plugin/src/test/java/org/apache/netbeans/nbm/CreateClusterMojoTest.java index a148b35e..60d7a4ff 100644 --- a/nbm-maven-plugin/src/test/java/org/apache/netbeans/nbm/CreateClusterMojoTest.java +++ b/nbm-maven-plugin/src/test/java/org/apache/netbeans/nbm/CreateClusterMojoTest.java @@ -18,6 +18,8 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -62,6 +64,7 @@ public void testEmptyProject() throws Exception { CreateClusterMojo createclustermojo = (CreateClusterMojo) lookupMojo("cluster", pom); MavenSession mocksession = Mockito.mock(MavenSession.class); setVariableValueToObject(createclustermojo, "session", mocksession); + Mockito.doReturn(new MavenProjectStubImpl()).when(mocksession).getCurrentProject(); assertNotNull(createclustermojo); MojoExecutionException assertThrows = assertThrows(MojoExecutionException.class, () -> createclustermojo.execute()); assertEquals("This goal only makes sense on reactor projects.", assertThrows.getMessage()); @@ -85,8 +88,16 @@ public String getId() { return "foo"; } + @Override + public Build getBuild() { + Build mock = Mockito.mock(Build.class); + Mockito.doReturn(getBasedir() + File.separator + "nbm").when(mock).getDirectory(); + return mock; + } + }); Mockito.doReturn(lmp).when(mocksession).getProjects(); + Mockito.doReturn(new MavenProjectStubImpl()).when(mocksession).getCurrentProject(); setVariableValueToObject(createclustermojo, "session", mocksession); assertNotNull(createclustermojo); MojoFailureException assertThrows = assertThrows(MojoFailureException.class, () -> createclustermojo.execute()); @@ -112,8 +123,21 @@ public String getId() { return "foo"; } + @Override + public Build getBuild() { + Build mock = Mockito.mock(Build.class); + Mockito.doReturn(getBasedir() + File.separator + "nbm").when(mock).getDirectory(); + try { + Files.createDirectories(Paths.get(getBasedir() + File.separator + "nbm")); + } catch (IOException ex) { + System.getLogger(CreateClusterMojoTest.class.getName()).log(System.Logger.Level.ERROR, (String) null, ex); + } + return mock; + } + }); Mockito.doReturn(lmp).when(mocksession).getProjects(); + Mockito.doReturn(new MavenProjectStubImpl()).when(mocksession).getCurrentProject(); File clusterdir = (File) getVariableValueFromObject(createclustermojo, "nbmBuildDir"); File file = new File(clusterdir, "clusters"); file.mkdirs(); @@ -150,6 +174,7 @@ public Build getBuild() { }); Mockito.doReturn(lmp).when(mocksession).getProjects(); + Mockito.doReturn(new MavenProjectStubImpl()).when(mocksession).getCurrentProject(); setVariableValueToObject(createclustermojo, "session", mocksession); assertNotNull(createclustermojo); createclustermojo.execute(); @@ -199,7 +224,7 @@ public Build getBuild() { }); Mockito.doReturn(lmp).when(mocksession).getProjects(); - Mockito.doReturn(new MavenProjectStub()).when(mocksession).getCurrentProject(); + Mockito.doReturn(new MavenProjectStubImpl()).when(mocksession).getCurrentProject(); setVariableValueToObject(createclustermojo, "project", lmp.get(0)); setVariableValueToObject(createclustermojo, "session", mocksession); setVariableValueToObject(createclustermojo, "cluster", "cl"); @@ -222,4 +247,28 @@ private void createDummyJarApp(String folder) throws IOException { jos.closeEntry(); } } + + private static class MavenProjectStubImpl extends MavenProjectStub { + + public MavenProjectStubImpl() { + } + + @Override + public String getPackaging() { + return "nbm"; + } + + @Override + public String getId() { + return "foo"; + } + + @Override + public Build getBuild() { + Build mock = Mockito.mock(Build.class); + Mockito.doReturn(getBasedir() + File.separator + "nbm").when(mock).getDirectory(); + return mock; + } + + } }