mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-157804 Missing version in pom removes all dependencies from module
This commit is contained in:
+73
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.idea.maven.server;
|
||||
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.apache.log4j.BasicConfigurator;
|
||||
import org.apache.log4j.Level;
|
||||
@@ -25,14 +26,25 @@ import org.apache.maven.artifact.DefaultArtifact;
|
||||
import org.apache.maven.artifact.handler.DefaultArtifactHandler;
|
||||
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
|
||||
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
|
||||
import org.apache.maven.artifact.resolver.ArtifactResolver;
|
||||
import org.apache.maven.artifact.resolver.ResolutionListener;
|
||||
import org.apache.maven.artifact.versioning.ArtifactVersion;
|
||||
import org.apache.maven.execution.MavenExecutionRequest;
|
||||
import org.apache.maven.model.building.ModelBuildingRequest;
|
||||
import org.apache.maven.model.interpolation.ModelInterpolator;
|
||||
import org.apache.maven.project.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.maven.model.MavenRemoteRepository;
|
||||
import org.jetbrains.idea.maven.server.embedder.CustomMaven3ModelInterpolator2;
|
||||
import org.jetbrains.idea.maven.server.embedder.MavenExecutionResult;
|
||||
|
||||
import java.io.File;
|
||||
import java.rmi.RemoteException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@@ -111,6 +123,67 @@ public abstract class Maven3ServerEmbedder extends MavenRemoteObject implements
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected List<ProjectBuildingResult> getProjectBuildingResults(@NotNull MavenExecutionRequest request, @NotNull Collection<File> files) {
|
||||
final ProjectBuilder builder = getComponent(ProjectBuilder.class);
|
||||
|
||||
CustomMaven3ModelInterpolator2 modelInterpolator = (CustomMaven3ModelInterpolator2)getComponent(ModelInterpolator.class);
|
||||
|
||||
String savedLocalRepository = modelInterpolator.getLocalRepository();
|
||||
modelInterpolator.setLocalRepository(request.getLocalRepositoryPath().getAbsolutePath());
|
||||
List<ProjectBuildingResult> buildingResults = new SmartList<ProjectBuildingResult>();
|
||||
|
||||
final ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
|
||||
projectBuildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
|
||||
projectBuildingRequest.setResolveDependencies(true);
|
||||
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);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
ProjectBuildingResult build = builder.build(result.getPomFile(), projectBuildingRequest);
|
||||
buildingResults.add(build);
|
||||
}
|
||||
catch (ProjectBuildingException e2) {
|
||||
buildingResults.addAll(e2.getResults());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
modelInterpolator.setLocalRepository(savedLocalRepository);
|
||||
}
|
||||
return buildingResults;
|
||||
}
|
||||
|
||||
protected void addMvn2CompatResults(MavenProject project,
|
||||
List<Exception> exceptions,
|
||||
List<ResolutionListener> listeners,
|
||||
ArtifactRepository localRepository,
|
||||
Collection<MavenExecutionResult> executionResults) {
|
||||
ArtifactResolutionRequest resolutionRequest = new ArtifactResolutionRequest();
|
||||
resolutionRequest.setArtifactDependencies(project.getDependencyArtifacts());
|
||||
resolutionRequest.setArtifact(project.getArtifact());
|
||||
resolutionRequest.setManagedVersionMap(project.getManagedVersionMap());
|
||||
resolutionRequest.setLocalRepository(localRepository);
|
||||
resolutionRequest.setRemoteRepositories(project.getRemoteArtifactRepositories());
|
||||
resolutionRequest.setListeners(listeners);
|
||||
|
||||
resolutionRequest.setResolveRoot(false);
|
||||
resolutionRequest.setResolveTransitively(true);
|
||||
|
||||
ArtifactResolver resolver = getComponent(ArtifactResolver.class);
|
||||
ArtifactResolutionResult result = resolver.resolve(resolutionRequest);
|
||||
|
||||
project.setArtifacts(result.getArtifacts());
|
||||
executionResults.add(new MavenExecutionResult(project, exceptions));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected abstract List<ArtifactRepository> convertRepositories(List<MavenRemoteRepository> repositories) throws RemoteException;
|
||||
|
||||
|
||||
+2
-38
@@ -38,7 +38,6 @@ import org.apache.maven.model.Activation;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.Profile;
|
||||
import org.apache.maven.model.building.ModelBuildingRequest;
|
||||
import org.apache.maven.model.building.ModelProblem;
|
||||
import org.apache.maven.model.interpolation.ModelInterpolator;
|
||||
import org.apache.maven.model.profile.DefaultProfileInjector;
|
||||
@@ -604,26 +603,7 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
// copied from DefaultMavenProjectBuilder.buildWithDependencies
|
||||
ProjectBuilder builder = getComponent(ProjectBuilder.class);
|
||||
|
||||
CustomMaven3ModelInterpolator2 modelInterpolator = (CustomMaven3ModelInterpolator2)getComponent(ModelInterpolator.class);
|
||||
|
||||
String savedLocalRepository = modelInterpolator.getLocalRepository();
|
||||
modelInterpolator.setLocalRepository(request.getLocalRepositoryPath().getAbsolutePath());
|
||||
List<ProjectBuildingResult> buildingResults;
|
||||
|
||||
try {
|
||||
ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
|
||||
projectBuildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
|
||||
buildingResults = builder.build(new ArrayList<File>(files), false, projectBuildingRequest);
|
||||
}
|
||||
catch (ProjectBuildingException e) {
|
||||
buildingResults = e.getResults();
|
||||
}
|
||||
finally {
|
||||
modelInterpolator.setLocalRepository(savedLocalRepository);
|
||||
}
|
||||
List<ProjectBuildingResult> buildingResults = getProjectBuildingResults(request, files);
|
||||
|
||||
for (ProjectBuildingResult buildingResult : buildingResults) {
|
||||
MavenProject project = buildingResult.getProject();
|
||||
@@ -658,23 +638,7 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
|
||||
//
|
||||
|
||||
if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING) {
|
||||
ArtifactResolutionRequest resolutionRequest = new ArtifactResolutionRequest();
|
||||
resolutionRequest.setArtifactDependencies(project.getDependencyArtifacts());
|
||||
resolutionRequest.setArtifact(project.getArtifact());
|
||||
resolutionRequest.setManagedVersionMap(project.getManagedVersionMap());
|
||||
resolutionRequest.setLocalRepository(myLocalRepository);
|
||||
resolutionRequest.setRemoteRepositories(project.getRemoteArtifactRepositories());
|
||||
resolutionRequest.setListeners(listeners);
|
||||
|
||||
resolutionRequest.setResolveRoot(false);
|
||||
resolutionRequest.setResolveTransitively(true);
|
||||
|
||||
ArtifactResolver resolver = getComponent(ArtifactResolver.class);
|
||||
ArtifactResolutionResult result = resolver.resolve(resolutionRequest);
|
||||
|
||||
project.setArtifacts(result.getArtifacts());
|
||||
// end copied from DefaultMavenProjectBuilder.buildWithDependencies
|
||||
executionResults.add(new MavenExecutionResult(project, exceptions));
|
||||
addMvn2CompatResults(project, exceptions, listeners, myLocalRepository, executionResults);
|
||||
}
|
||||
else {
|
||||
final DependencyResolutionResult dependencyResolutionResult = resolveDependencies(project, repositorySession);
|
||||
|
||||
+3
-42
@@ -18,10 +18,7 @@ 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.ExceptionUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.SystemProperties;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.THashSet;
|
||||
@@ -40,7 +37,6 @@ import org.apache.maven.model.Activation;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.Profile;
|
||||
import org.apache.maven.model.building.ModelBuildingRequest;
|
||||
import org.apache.maven.model.building.ModelProblem;
|
||||
import org.apache.maven.model.interpolation.ModelInterpolator;
|
||||
import org.apache.maven.model.profile.DefaultProfileInjector;
|
||||
@@ -623,26 +619,7 @@ public class Maven32ServerEmbedderImpl extends Maven3ServerEmbedder {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
// copied from DefaultMavenProjectBuilder.buildWithDependencies
|
||||
ProjectBuilder builder = getComponent(ProjectBuilder.class);
|
||||
|
||||
CustomMaven3ModelInterpolator2 modelInterpolator = (CustomMaven3ModelInterpolator2)getComponent(ModelInterpolator.class);
|
||||
|
||||
String savedLocalRepository = modelInterpolator.getLocalRepository();
|
||||
modelInterpolator.setLocalRepository(request.getLocalRepositoryPath().getAbsolutePath());
|
||||
List<ProjectBuildingResult> buildingResults;
|
||||
|
||||
try {
|
||||
ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
|
||||
projectBuildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
|
||||
buildingResults = builder.build(new ArrayList<File>(files), false, projectBuildingRequest);
|
||||
}
|
||||
catch (ProjectBuildingException e) {
|
||||
buildingResults = e.getResults();
|
||||
}
|
||||
finally {
|
||||
modelInterpolator.setLocalRepository(savedLocalRepository);
|
||||
}
|
||||
List<ProjectBuildingResult> buildingResults = getProjectBuildingResults(request, files);
|
||||
|
||||
for (ProjectBuildingResult buildingResult : buildingResults) {
|
||||
MavenProject project = buildingResult.getProject();
|
||||
@@ -680,23 +657,7 @@ public class Maven32ServerEmbedderImpl extends Maven3ServerEmbedder {
|
||||
//
|
||||
|
||||
if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING) {
|
||||
ArtifactResolutionRequest resolutionRequest = new ArtifactResolutionRequest();
|
||||
resolutionRequest.setArtifactDependencies(project.getDependencyArtifacts());
|
||||
resolutionRequest.setArtifact(project.getArtifact());
|
||||
resolutionRequest.setManagedVersionMap(project.getManagedVersionMap());
|
||||
resolutionRequest.setLocalRepository(myLocalRepository);
|
||||
resolutionRequest.setRemoteRepositories(project.getRemoteArtifactRepositories());
|
||||
resolutionRequest.setListeners(listeners);
|
||||
|
||||
resolutionRequest.setResolveRoot(false);
|
||||
resolutionRequest.setResolveTransitively(true);
|
||||
|
||||
ArtifactResolver resolver = getComponent(ArtifactResolver.class);
|
||||
ArtifactResolutionResult result = resolver.resolve(resolutionRequest);
|
||||
|
||||
project.setArtifacts(result.getArtifacts());
|
||||
// end copied from DefaultMavenProjectBuilder.buildWithDependencies
|
||||
executionResults.add(new MavenExecutionResult(project, exceptions));
|
||||
addMvn2CompatResults(project, exceptions, listeners, myLocalRepository, executionResults);
|
||||
}
|
||||
else {
|
||||
final DependencyResolutionResult dependencyResolutionResult = resolveDependencies(project, repositorySession);
|
||||
|
||||
Reference in New Issue
Block a user