Search in sources :

Example 6 with IMavenExecutionContext

use of org.eclipse.m2e.core.embedder.IMavenExecutionContext in project bndtools by bndtools.

the class IndexConfigurator method getBuildParticipant.

/**
 * We have to temporarily override the ongoing maven build by creating a new context. This allows us to replace the
 * workspace repository with our own.
 */
@Override
public AbstractBuildParticipant getBuildParticipant(final IMavenProjectFacade projectFacade, MojoExecution execution, final IPluginExecutionMetadata executionMetadata) {
    return new MojoExecutionBuildParticipant(execution, true, false) {

        @Override
        public Set<IProject> build(int kind, IProgressMonitor monitor) throws Exception {
            if (appliesToBuildKind(kind)) {
                final IProject project = projectFacade.getProject();
                IMarker[] imarkers = project.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE);
                if (imarkers != null && Arrays.stream(imarkers).map(m -> m.getAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO)).anyMatch(s -> s == IMarker.SEVERITY_ERROR)) {
                    // there are compile errors, don't index
                    return null;
                }
                final SubMonitor progress = SubMonitor.convert(monitor, "Executing indexer plugin", 2);
                final IMaven maven = MavenPlugin.getMaven();
                IMavenExecutionContext context = maven.createExecutionContext();
                context.getExecutionRequest().setWorkspaceReader(new IndexerWorkspaceRepository());
                final MavenProject mavenProject = getMavenProject(projectFacade, progress.newChild(1));
                context.execute(new ICallable<Void>() {

                    @Override
                    public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
                        maven.execute(mavenProject, getMojoExecution(), monitor);
                        IPath buildDirPath = Path.fromOSString(mavenProject.getBuild().getDirectory());
                        IProject project = projectFacade.getProject();
                        IPath projectPath = project.getLocation();
                        IPath relativeBuildDirPath = buildDirPath.makeRelativeTo(projectPath);
                        IFolder buildDir = project.getFolder(relativeBuildDirPath);
                        buildDir.refreshLocal(IResource.DEPTH_INFINITE, progress.newChild(1));
                        return null;
                    }
                }, progress.newChild(1));
            }
            return null;
        }
    };
}
Also used : ArtifactKey(org.eclipse.m2e.core.embedder.ArtifactKey) Arrays(java.util.Arrays) IFolder(org.eclipse.core.resources.IFolder) ResourcesPlugin(org.eclipse.core.resources.ResourcesPlugin) AbstractBuildParticipant(org.eclipse.m2e.core.project.configurator.AbstractBuildParticipant) SubMonitor(org.eclipse.core.runtime.SubMonitor) AbstractProjectConfigurator(org.eclipse.m2e.core.project.configurator.AbstractProjectConfigurator) Exceptions(aQute.lib.exceptions.Exceptions) HashMap(java.util.HashMap) CoreException(org.eclipse.core.runtime.CoreException) ArrayList(java.util.ArrayList) IStatus(org.eclipse.core.runtime.IStatus) IProject(org.eclipse.core.resources.IProject) MavenProject(org.apache.maven.project.MavenProject) IPath(org.eclipse.core.runtime.IPath) LocalArtifactRepository(org.apache.maven.repository.LocalArtifactRepository) IResourceDelta(org.eclipse.core.resources.IResourceDelta) Map(java.util.Map) Artifact(org.apache.maven.artifact.Artifact) IMarker(org.eclipse.core.resources.IMarker) WorkspaceRepository(org.eclipse.aether.repository.WorkspaceRepository) MojoExecutionKey(org.eclipse.m2e.core.project.configurator.MojoExecutionKey) Job(org.eclipse.core.runtime.jobs.Job) IMavenProjectFacade(org.eclipse.m2e.core.project.IMavenProjectFacade) IPluginExecutionMetadata(org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata) FULL_BUILD(org.eclipse.core.resources.IncrementalProjectBuilder.FULL_BUILD) MojoExecution(org.apache.maven.plugin.MojoExecution) Set(java.util.Set) Status(org.eclipse.core.runtime.Status) MojoExecutionBuildParticipant(org.eclipse.m2e.core.project.configurator.MojoExecutionBuildParticipant) POST_BUILD(org.eclipse.core.resources.IResourceChangeEvent.POST_BUILD) File(java.io.File) WorkspaceReader(org.eclipse.aether.repository.WorkspaceReader) IResourceChangeEvent(org.eclipse.core.resources.IResourceChangeEvent) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) IJavaModelMarker(org.eclipse.jdt.core.IJavaModelMarker) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob) List(java.util.List) IMavenExecutionContext(org.eclipse.m2e.core.embedder.IMavenExecutionContext) ICallable(org.eclipse.m2e.core.embedder.ICallable) IResource(org.eclipse.core.resources.IResource) Path(org.eclipse.core.runtime.Path) IResourceChangeListener(org.eclipse.core.resources.IResourceChangeListener) MavenPlugin(org.eclipse.m2e.core.MavenPlugin) ProjectConfigurationRequest(org.eclipse.m2e.core.project.configurator.ProjectConfigurationRequest) IMaven(org.eclipse.m2e.core.embedder.IMaven) IPath(org.eclipse.core.runtime.IPath) SubMonitor(org.eclipse.core.runtime.SubMonitor) IProject(org.eclipse.core.resources.IProject) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) MavenProject(org.apache.maven.project.MavenProject) CoreException(org.eclipse.core.runtime.CoreException) IMavenExecutionContext(org.eclipse.m2e.core.embedder.IMavenExecutionContext) IMarker(org.eclipse.core.resources.IMarker) IMaven(org.eclipse.m2e.core.embedder.IMaven) MojoExecutionBuildParticipant(org.eclipse.m2e.core.project.configurator.MojoExecutionBuildParticipant) IFolder(org.eclipse.core.resources.IFolder)

Aggregations

IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)6 IMavenExecutionContext (org.eclipse.m2e.core.embedder.IMavenExecutionContext)6 IStatus (org.eclipse.core.runtime.IStatus)5 ICallable (org.eclipse.m2e.core.embedder.ICallable)5 IMavenProjectFacade (org.eclipse.m2e.core.project.IMavenProjectFacade)4 MojoExecution (org.apache.maven.plugin.MojoExecution)3 MavenProject (org.apache.maven.project.MavenProject)3 CoreException (org.eclipse.core.runtime.CoreException)3 IMaven (org.eclipse.m2e.core.embedder.IMaven)3 ArrayList (java.util.ArrayList)2 List (java.util.List)2 MavenExecutionPlan (org.apache.maven.lifecycle.MavenExecutionPlan)2 SubMonitor (org.eclipse.core.runtime.SubMonitor)2 Exceptions (aQute.lib.exceptions.Exceptions)1 MultiStatusBuilder (com.liferay.ide.core.util.MultiStatusBuilder)1 File (java.io.File)1 Arrays (java.util.Arrays)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Set (java.util.Set)1