maven: set ide workspace reader before building pom files

This commit is contained in:
Vladislav.Soroka
2016-08-02 18:28:40 +03:00
parent cc97525fd4
commit c0b8178131
3 changed files with 59 additions and 38 deletions
@@ -136,21 +136,23 @@ public abstract class Maven3ServerEmbedder extends MavenRemoteObject implements
final ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
projectBuildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
projectBuildingRequest.setResolveDependencies(false);
try {
buildingResults = builder.build(new ArrayList<File>(files), false, projectBuildingRequest);
}
catch (ProjectBuildingException e) {
for (ProjectBuildingResult result : e.getResults()) {
if (result.getProject() != null) {
buildingResults.add(result);
if (files.size() == 1) {
buildSinglePom(builder, buildingResults, projectBuildingRequest, files.iterator().next());
}
else {
try {
buildingResults = builder.build(new ArrayList<File>(files), false, projectBuildingRequest);
}
else {
try {
ProjectBuildingResult build = builder.build(result.getPomFile(), projectBuildingRequest);
buildingResults.add(build);
}
catch (ProjectBuildingException e2) {
buildingResults.addAll(e2.getResults());
catch (ProjectBuildingException e) {
for (ProjectBuildingResult result : e.getResults()) {
if (result.getProject() != null) {
buildingResults.add(result);
}
else {
buildSinglePom(builder, buildingResults, projectBuildingRequest, result.getPomFile());
}
}
}
}
@@ -161,6 +163,19 @@ public abstract class Maven3ServerEmbedder extends MavenRemoteObject implements
return buildingResults;
}
private static void buildSinglePom(ProjectBuilder builder,
List<ProjectBuildingResult> buildingResults,
ProjectBuildingRequest projectBuildingRequest,
File pomFile) {
try {
ProjectBuildingResult build = builder.build(pomFile, projectBuildingRequest);
buildingResults.add(build);
}
catch (ProjectBuildingException e) {
buildingResults.addAll(e.getResults());
}
}
protected void addMvn2CompatResults(MavenProject project,
List<Exception> exceptions,
List<ResolutionListener> listeners,
@@ -603,6 +603,16 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
@Override
public void run() {
try {
RepositorySystemSession repositorySession = getComponent(LegacySupport.class).getRepositorySession();
if (repositorySession instanceof DefaultRepositorySystemSession) {
((DefaultRepositorySystemSession)repositorySession)
.setTransferListener(new Maven30TransferListenerAdapter(myCurrentIndicator));
if (myWorkspaceMap != null) {
((DefaultRepositorySystemSession)repositorySession).setWorkspaceReader(new Maven30WorkspaceReader(myWorkspaceMap));
}
}
List<ProjectBuildingResult> buildingResults = getProjectBuildingResults(request, files);
for (ProjectBuildingResult buildingResult : buildingResults) {
@@ -618,16 +628,6 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
continue;
}
RepositorySystemSession repositorySession = getComponent(LegacySupport.class).getRepositorySession();
if (repositorySession instanceof DefaultRepositorySystemSession) {
((DefaultRepositorySystemSession)repositorySession)
.setTransferListener(new Maven30TransferListenerAdapter(myCurrentIndicator));
if (myWorkspaceMap != null) {
((DefaultRepositorySystemSession)repositorySession).setWorkspaceReader(new Maven30WorkspaceReader(myWorkspaceMap));
}
}
List<Exception> exceptions = new ArrayList<Exception>();
loadExtensions(project, exceptions);
@@ -18,7 +18,10 @@ package org.jetbrains.idea.maven.server;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.*;
import com.intellij.util.ExceptionUtil;
import com.intellij.util.Function;
import com.intellij.util.ReflectionUtil;
import com.intellij.util.SystemProperties;
import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
@@ -30,7 +33,10 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
import org.apache.maven.artifact.resolver.*;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.artifact.resolver.ResolutionListener;
import org.apache.maven.cli.MavenCli;
import org.apache.maven.execution.*;
import org.apache.maven.model.Activation;
@@ -619,6 +625,19 @@ public class Maven32ServerEmbedderImpl extends Maven3ServerEmbedder {
@Override
public void run() {
try {
RepositorySystemSession repositorySession = getComponent(LegacySupport.class).getRepositorySession();
if (repositorySession instanceof DefaultRepositorySystemSession) {
DefaultRepositorySystemSession session = (DefaultRepositorySystemSession)repositorySession;
session.setTransferListener(new TransferListenerAdapter(myCurrentIndicator));
if (myWorkspaceMap != null) {
session.setWorkspaceReader(new Maven32WorkspaceReader(myWorkspaceMap));
}
session.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
session.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true);
}
List<ProjectBuildingResult> buildingResults = getProjectBuildingResults(request, files);
for (ProjectBuildingResult buildingResult : buildingResults) {
@@ -634,19 +653,6 @@ public class Maven32ServerEmbedderImpl extends Maven3ServerEmbedder {
continue;
}
RepositorySystemSession repositorySession = getComponent(LegacySupport.class).getRepositorySession();
if (repositorySession instanceof DefaultRepositorySystemSession) {
DefaultRepositorySystemSession session = (DefaultRepositorySystemSession)repositorySession;
session.setTransferListener(new TransferListenerAdapter(myCurrentIndicator));
if (myWorkspaceMap != null) {
session.setWorkspaceReader(new Maven32WorkspaceReader(myWorkspaceMap));
}
session.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
session.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true);
}
List<Exception> exceptions = new ArrayList<Exception>();
loadExtensions(project, exceptions);