use of org.eclipse.m2e.core.embedder.IMaven in project liferay-ide by liferay.
the class MavenProjectBuilder method execJarMojo.
public IStatus execJarMojo(IMavenProjectFacade projectFacade, IProgressMonitor monitor) throws CoreException {
IStatus retval = null;
ICallable<IStatus> callable = new ICallable<IStatus>() {
public IStatus call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
MavenProject mavenProject = projectFacade.getMavenProject();
if (mavenProject == null) {
mavenProject = projectFacade.getMavenProject(monitor);
}
IMaven maven = MavenPlugin.getMaven();
MavenExecutionPlan plan = maven.calculateExecutionPlan(mavenProject, Arrays.asList("jar:jar"), true, monitor);
List<MojoExecution> mojoExecutions = plan.getMojoExecutions();
if (mojoExecutions != null) {
for (MojoExecution mojoExecution : mojoExecutions) {
MavenPlugin.getMaven().execute(mavenProject, mojoExecution, monitor);
}
}
return Status.OK_STATUS;
}
};
retval = executeMaven(projectFacade, callable, monitor);
return retval;
}
use of org.eclipse.m2e.core.embedder.IMaven in project m2e-nar by maven-nar.
the class MavenUtils method readSettings.
public static <T extends AbstractCompileMojo> NarExecution readSettings(final ConfiguratorContext context, final IMavenProjectFacade facade, final MojoExecution compileExecution, final Class<T> mojoType, final String buildType, final IProgressMonitor monitor) throws CoreException {
final IMaven maven = context.getMaven();
final MavenProject mavenProject = facade.getMavenProject();
NarExecution settings = null;
if (compileExecution != null) {
// Load plugin with Maven in order to check config
// and to get at aol.properties resource inside the plugin
AbstractMojo narMojo = loadMojo(maven, mavenProject, compileExecution, AbstractMojo.class, monitor);
try {
// ClassRealm pluginRealm =
// compileExecution.getMojoDescriptor().getPluginDescriptor().getClassRealm();
// NarClassloader classloader = new NarClassloader(pluginRealm);
// INarExecutionBuilder builder =
// classloader.createNarExecutionBuilder(mavenProject,
// compileMojo);
// settings = builder.build(NarExecution.MAIN);
T compileMojo = getConfiguredMojo(maven, mavenProject, compileExecution, mojoType, narMojo.getLog(), monitor);
compileMojo.setNarProperties(new NarProperties(mavenProject, narMojo.getClass()));
// Need to call validate to set up defaults
compileMojo.validate();
// Resolve the NAR artifacts, possibly from workspace
compileMojo.prepareNarArtifacts(context, facade, monitor);
NarExecutionBuilder builder = new NarExecutionBuilder(compileMojo, compileExecution);
settings = builder.build(buildType);
} catch (MojoFailureException e) {
throw new CoreException(new Status(IStatus.ERROR, MavenNarPlugin.PLUGIN_ID, "Couldn't configure mojo"));
} catch (MojoExecutionException e) {
throw new CoreException(new Status(IStatus.ERROR, MavenNarPlugin.PLUGIN_ID, "Couldn't configure mojo"));
} finally {
releaseMojo(maven, mavenProject, narMojo, compileExecution, monitor);
}
} else {
throw new CoreException(new Status(IStatus.ERROR, MavenNarPlugin.PLUGIN_ID, "Couldn't find default-nar-compile execution"));
}
return settings;
}
use of org.eclipse.m2e.core.embedder.IMaven in project bndtools by bndtools.
the class BndConfigurator method execJarMojo.
private void execJarMojo(final IMavenProjectFacade projectFacade, IProgressMonitor monitor) throws CoreException {
final IMaven maven = MavenPlugin.getMaven();
ProjectRegistryManager projectRegistryManager = MavenPluginActivator.getDefault().getMavenProjectManagerImpl();
ResolverConfiguration resolverConfiguration = new ResolverConfiguration();
resolverConfiguration.setResolveWorkspaceProjects(true);
IMavenExecutionContext context = projectRegistryManager.createExecutionContext(projectFacade.getPom(), resolverConfiguration);
context.execute(new ICallable<Void>() {
@Override
public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
SubMonitor progress = SubMonitor.convert(monitor);
MavenProject mavenProject = getMavenProject(projectFacade, progress.newChild(1));
MavenExecutionPlan plan = maven.calculateExecutionPlan(mavenProject, Arrays.asList("jar:jar"), true, monitor);
List<MojoExecution> mojoExecutions = plan.getMojoExecutions();
if (mojoExecutions != null) {
for (MojoExecution mojoExecution : mojoExecutions) {
maven.execute(mavenProject, mojoExecution, progress.newChild(1));
}
}
// We can now decorate based on the build we just did.
try {
IProjectDecorator decorator = Injector.ref.get();
if (decorator != null) {
BndProjectInfo info = new MavenProjectInfo(mavenProject);
decorator.updateDecoration(projectFacade.getProject(), info);
}
} catch (Exception e) {
logger.logError("Failed to decorate project " + projectFacade.getProject().getName(), e);
}
return null;
}
}, monitor);
}
use of org.eclipse.m2e.core.embedder.IMaven 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;
}
};
}
Aggregations