diff options
author | Igor Fedorenko | 2011-07-31 07:58:16 +0000 |
---|---|---|
committer | Igor Fedorenko | 2011-07-31 07:58:16 +0000 |
commit | c47e215285d7c562d2e8c98c52a80349abe070b6 (patch) | |
tree | 7960aca2bfe35fdf5b1745332a7bb24c1b407dfd /org.eclipse.m2e.core | |
parent | e288b8a47e935b50a091b259cb96beebbe5c3ee7 (diff) | |
parent | 74e41f5cadf4d515ccb47e38a8656a7b111ef457 (diff) | |
download | m2e-core-c47e215285d7c562d2e8c98c52a80349abe070b6.tar.gz m2e-core-c47e215285d7c562d2e8c98c52a80349abe070b6.tar.xz m2e-core-c47e215285d7c562d2e8c98c52a80349abe070b6.zip |
Merge remote-tracking branch 'origin/master' into m2e-self-hosting
Diffstat (limited to 'org.eclipse.m2e.core')
-rw-r--r-- | org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/MavenBuilder.java | 4 | ||||
-rw-r--r-- | org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenImpl.java | 28 |
2 files changed, 32 insertions, 0 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/MavenBuilder.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/MavenBuilder.java index 169fa3b8..b08ac264 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/MavenBuilder.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/MavenBuilder.java @@ -174,6 +174,7 @@ public class MavenBuilder extends IncrementalProjectBuilder { participant.setGetDeltaCallback(getDeltaCallback); participant.setSession(session); participant.setBuildContext(buildContext); + long executionStartTime = System.currentTimeMillis(); try { if(FULL_BUILD == kind || delta != null || participant.callOnEmptyDelta()) { Set<IProject> sub = participant.build(kind, monitor); @@ -185,6 +186,9 @@ public class MavenBuilder extends IncrementalProjectBuilder { log.debug("Exception in build participant {}", participant.getClass().getName(), e); buildErrors.put(e, mojoExecutionKey); } finally { + log.debug("Finished executing build participant {} for plugin execution {} in {} ms", new Object[] { + participant.getClass().getName(), mojoExecutionKey.toString(), + System.currentTimeMillis() - executionStartTime}); participant.setMavenProjectFacade(null); participant.setGetDeltaCallback(null); participant.setSession(null); diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenImpl.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenImpl.java index 5d35bdb0..056a9d93 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenImpl.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenImpl.java @@ -20,12 +20,17 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Properties; +import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -74,7 +79,9 @@ import org.apache.maven.execution.MavenExecutionResult; import org.apache.maven.execution.MavenSession; import org.apache.maven.lifecycle.LifecycleExecutor; import org.apache.maven.lifecycle.MavenExecutionPlan; +import org.apache.maven.lifecycle.internal.DependencyContext; import org.apache.maven.lifecycle.internal.LifecycleExecutionPlanCalculator; +import org.apache.maven.lifecycle.internal.MojoExecutor; import org.apache.maven.model.ConfigurationContainer; import org.apache.maven.model.InputLocation; import org.apache.maven.model.Model; @@ -286,10 +293,31 @@ public class MavenImpl implements IMaven, IMavenConfigurationChangeListener { } public void execute(MavenSession session, MojoExecution execution, IProgressMonitor monitor) { + Map<MavenProject, Set<Artifact>> artifacts = new HashMap<MavenProject, Set<Artifact>>(); + for(MavenProject project : session.getProjects()) { + artifacts.put(project, new LinkedHashSet<Artifact>(project.getArtifacts())); + } try { + MojoExecutor mojoExecutor = lookup(MojoExecutor.class); + DependencyContext dependencyContext = mojoExecutor.newDependencyContext(session, + Collections.singletonList(execution)); + + // workaround for http://jira.codehaus.org/browse/MNG-5141 + // use reflection until we can get maven 3.0.4+, which has MNG-5141 fixed + Method ensureDependenciesAreResolved = mojoExecutor.getClass().getDeclaredMethod("ensureDependenciesAreResolved", + MojoDescriptor.class, MavenSession.class, DependencyContext.class); + ensureDependenciesAreResolved.setAccessible(true); + ensureDependenciesAreResolved.invoke(mojoExecutor, execution.getMojoDescriptor(), session, dependencyContext); + lookup(BuildPluginManager.class).executeMojo(session, execution); } catch(Exception ex) { session.getResult().addException(ex); + } finally { + for(MavenProject project : session.getProjects()) { + project.setArtifactFilter(null); + project.setResolvedArtifacts(null); + project.setArtifacts(artifacts.get(project)); + } } } |