use of org.eclipse.m2e.core.project.IMavenProjectFacade 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;
}
};
}
use of org.eclipse.m2e.core.project.IMavenProjectFacade in project bndtools by bndtools.
the class MavenWorkspaceRepository method versions.
@Override
public SortedSet<Version> versions(String bsn) throws Exception {
if (!inited) {
init();
}
Version version = null;
final IMavenProjectFacade projectFacade = bsnMap.get(bsn);
if (projectFacade != null) {
File bundleFile = guessBundleFile(projectFacade);
if (bundleFile == null || !bundleFile.exists()) {
MavenProject mavenProject = getMavenProject(projectFacade, new NullProgressMonitor());
bundleFile = getBundleFile(mavenProject);
}
if (bundleFile != null && bundleFile.exists()) {
Domain domain = Domain.domain(bundleFile);
version = new Version(domain.getBundleVersion());
}
}
if (version == null) {
return SortedList.empty();
}
return new SortedList<Version>(version);
}
Aggregations