diff --git a/org.eclipse.m2e.core.tests/src/org/eclipse/m2e/core/MavenBugsTest.java b/org.eclipse.m2e.core.tests/src/org/eclipse/m2e/core/MavenBugsTest.java index 15e3a30c6..5f6f2eb47 100644 --- a/org.eclipse.m2e.core.tests/src/org/eclipse/m2e/core/MavenBugsTest.java +++ b/org.eclipse.m2e.core.tests/src/org/eclipse/m2e/core/MavenBugsTest.java @@ -11,6 +11,8 @@ package org.eclipse.m2e.core; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import java.io.ByteArrayInputStream; import java.io.File; @@ -20,7 +22,10 @@ import java.util.Arrays; import java.util.List; +import org.apache.maven.execution.MavenExecutionResult; +import org.apache.maven.execution.MavenSession; import org.apache.maven.project.MavenProject; +import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.shared.utils.io.FileUtils; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; @@ -30,6 +35,8 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.m2e.core.embedder.IMaven; +import org.eclipse.m2e.core.embedder.IMavenExecutionContext; import org.eclipse.m2e.core.internal.MavenPluginActivator; import org.eclipse.m2e.core.project.IMavenProjectFacade; import org.eclipse.m2e.core.project.MavenProjectInfo; @@ -107,4 +114,24 @@ public void testBuildStartTime() throws Exception { IMarker[] markers = project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE); assertEquals(Arrays.toString(markers), 0, markers.length); } + + @Test + public void testAllProjects() throws Exception { + IMaven maven = MavenPlugin.getMaven(); + File pomFile = new File("resources/projects/simplePomOK/pom.xml"); + IMavenExecutionContext context = maven.createExecutionContext(); + MavenExecutionResult result = context.execute((context1, monitor1) -> { + ProjectBuildingRequest configuration = context.newProjectBuildingRequest(); + configuration.setResolveDependencies(true); + return maven.readMavenProject(pomFile, configuration); + }, monitor); + assertFalse(result.hasExceptions()); + MavenProject project = result.getProject(); + result = context.execute(project, (context1, monitor) -> { + MavenSession session = context1.getSession(); + assertNotNull("getProjects", session.getProjects()); + assertNotNull("getAllProjects", session.getAllProjects()); + return session.getResult(); + }, monitor); + } } diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java index 9da7e2f95..978543572 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenExecutionContext.java @@ -359,6 +359,7 @@ private V executeBare(MavenProject project, ICallable callable, IProgress .setTransferListener(new ArtifactTransferListenerAdapter(monitor)); final MavenProject origProject = mavenSession.getCurrentProject(); final List origProjects = mavenSession.getProjects(); + final List origAllProjects = mavenSession.getAllProjects(); final ClassLoader origTCCL = Thread.currentThread().getContextClassLoader(); try { if(project == null && projectSupplier != null) { @@ -366,7 +367,9 @@ private V executeBare(MavenProject project, ICallable callable, IProgress } if(project != null) { mavenSession.setCurrentProject(project); - mavenSession.setProjects(Collections.singletonList(project)); + List projects = Collections.singletonList(project); + mavenSession.setProjects(projects); + mavenSession.setAllProjects(projects); } return callable.call(this, IProgressMonitor.nullSafe(monitor)); } finally { @@ -375,6 +378,7 @@ private V executeBare(MavenProject project, ICallable callable, IProgress if(project != null) { mavenSession.setCurrentProject(origProject); mavenSession.setProjects(origProjects != null ? origProjects : Collections. emptyList()); + mavenSession.setAllProjects(origAllProjects != null ? origAllProjects : Collections. emptyList()); } } }