IDEA-200272 extract executeWithMavenSession method to the common module

This commit is contained in:
Vladislav.Soroka
2019-04-15 16:05:50 +03:00
parent c99273c7f3
commit 35dc1cd7ea
5 changed files with 193 additions and 161 deletions
@@ -76,33 +76,47 @@
</orderEntry>
<orderEntry type="module-library" scope="PROVIDED">
<library name="org.apache.maven:maven-compat:3.0.5" type="repository">
<properties maven-id="org.apache.maven:maven-compat:3.0.5" />
<properties maven-id="org.apache.maven:maven-compat:3.6.0" />
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-compat/3.0.5/maven-compat-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-model/3.0.5/maven-model-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-model-builder/3.0.5/maven-model-builder-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-settings/3.0.5/maven-settings-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-artifact/3.0.5/maven-artifact-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-core/3.0.5/maven-core-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-settings-builder/3.0.5/maven-settings-builder-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-repository-metadata/3.0.5/maven-repository-metadata-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-plugin-api/3.0.5/maven-plugin-api-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-aether-provider/3.0.5/maven-aether-provider-3.0.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/aether/aether-spi/1.13.1/aether-spi-1.13.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/aether/aether-impl/1.13.1/aether-impl-1.13.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/aether/aether-api/1.13.1/aether-api-1.13.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/aether/aether-util/1.13.1/aether-util-1.13.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-classworlds/2.4/plexus-classworlds-2.4.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-compat/3.6.0/maven-compat-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-model/3.6.0/maven-model-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-model-builder/3.6.0/maven-model-builder-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-builder-support/3.6.0/maven-builder-support-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-settings/3.6.0/maven-settings-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-settings-builder/3.6.0/maven-settings-builder-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-utils/2.0.6/plexus-utils-2.0.6.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/sisu/sisu-inject-plexus/2.3.0/sisu-inject-plexus-2.3.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/sisu/sisu-inject-bean/2.3.0/sisu-inject-bean-2.3.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/sonatype/sisu/sisu-guava/0.9.9/sisu-guava-0.9.9.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/wagon/wagon-provider-api/2.4/wagon-provider-api-2.4.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-artifact/3.6.0/maven-artifact-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-core/3.6.0/maven-core-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-plugin-api/3.6.0/maven-plugin-api-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-spi/1.3.1/maven-resolver-spi-1.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/shared/maven-shared-utils/3.2.1/maven-shared-utils-3.2.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.5/commons-io-2.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/google/inject/guice/4.2.1/guice-4.2.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/25.1-android/guava-25.1-android.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.0.0/checker-compat-qual-2.0.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.1.3/error_prone_annotations-2.1.3.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-classworlds/2.5.2/plexus-classworlds-2.5.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-resolver-provider/3.6.0/maven-resolver-provider-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/maven-repository-metadata/3.6.0/maven-repository-metadata-3.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-api/1.3.1/maven-resolver-api-1.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-util/1.3.1/maven-resolver-util-1.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-impl/1.3.1/maven-resolver-impl-1.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-utils/3.1.0/plexus-utils-3.1.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-interpolation/1.25/plexus-interpolation-1.25.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.3/org.eclipse.sisu.plexus-0.3.3.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/wagon/wagon-provider-api/3.2.0/wagon-provider-api-3.2.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -22,6 +22,10 @@ import com.intellij.util.containers.ContainerUtilRt;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.maven.AbstractMavenLifecycleParticipant;
import org.apache.maven.DefaultMaven;
import org.apache.maven.Maven;
import org.apache.maven.MavenExecutionException;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.DefaultArtifactHandler;
@@ -32,12 +36,19 @@ 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.DefaultMavenExecutionResult;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.building.ModelBuildingException;
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.plugin.LegacySupport;
import org.apache.maven.project.*;
import org.apache.maven.session.scope.internal.SessionScope;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.eclipse.aether.RepositorySystemSession;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.model.MavenModel;
@@ -117,11 +128,11 @@ public abstract class Maven3ServerEmbedder extends MavenRemoteObject implements
getLocalRepository(),
convertRepositories(remoteRepositories));
return ContainerUtilRt.map2List(versions, new Function<ArtifactVersion, String>() {
@Override
public String fun(ArtifactVersion version) {
return version.toString();
}
});
@Override
public String fun(ArtifactVersion version) {
return version.toString();
}
});
}
catch (Exception e) {
Maven3ServerGlobals.getLogger().info(e);
@@ -206,10 +217,10 @@ public abstract class Maven3ServerEmbedder extends MavenRemoteObject implements
private final DependencyResolutionResult myDependencyResolutionResult;
MyProjectBuildingResult(String projectId,
File pomFile,
MavenProject mavenProject,
List<ModelProblem> problems,
DependencyResolutionResult dependencyResolutionResult) {
File pomFile,
MavenProject mavenProject,
List<ModelProblem> problems,
DependencyResolutionResult dependencyResolutionResult) {
myProjectId = projectId;
myPomFile = pomFile;
myMavenProject = mavenProject;
@@ -321,11 +332,95 @@ public abstract class Maven3ServerEmbedder extends MavenRemoteObject implements
public abstract <T> T getComponent(Class<T> clazz);
public abstract void executeWithMavenSession(MavenExecutionRequest request, Runnable runnable);
protected void executeWithMavenSession(MavenExecutionRequest request, Runnable runnable) {
DefaultMaven maven = (DefaultMaven)getComponent(Maven.class);
SessionScope sessionScope = getComponent(SessionScope.class);
sessionScope.enter();
try {
RepositorySystemSession repositorySession = maven.newRepositorySession(request);
request.getProjectBuildingRequest().setRepositorySession(repositorySession);
MavenSession mavenSession = new MavenSession(getContainer(), repositorySession, request, new DefaultMavenExecutionResult());
sessionScope.seed(MavenSession.class, mavenSession);
LegacySupport legacySupport = getComponent(LegacySupport.class);
MavenSession oldSession = legacySupport.getSession();
legacySupport.setSession(mavenSession);
// adapted from {@link DefaultMaven#doExecute(MavenExecutionRequest)}
try {
for (AbstractMavenLifecycleParticipant listener : getLifecycleParticipants(Collections.<MavenProject>emptyList())) {
listener.afterSessionStart(mavenSession);
}
runnable.run();
}
catch (MavenExecutionException e) {
throw new RuntimeException(e);
}
finally {
legacySupport.setSession(oldSession);
}
}
finally {
sessionScope.exit();
}
}
@NotNull
protected abstract PlexusContainer getContainer();
public abstract MavenExecutionRequest createRequest(File file,
List<String> activeProfiles,
List<String> inactiveProfiles,
List<String> goals)
throws RemoteException;
protected static void warn(String message, Throwable e) {
try {
Maven3ServerGlobals.getLogger().warn(new RuntimeException(message, e));
}
catch (RemoteException e1) {
throw new RuntimeException(e1);
}
}
/**
* adapted from {@link DefaultMaven#getLifecycleParticipants(Collection)}
*/
private Collection<AbstractMavenLifecycleParticipant> getLifecycleParticipants(Collection<MavenProject> projects) {
Collection<AbstractMavenLifecycleParticipant> lifecycleListeners = new LinkedHashSet<AbstractMavenLifecycleParticipant>();
ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
try {
try {
lifecycleListeners.addAll(getContainer().lookupList(AbstractMavenLifecycleParticipant.class));
}
catch (ComponentLookupException e) {
// this is just silly, lookupList should return an empty list!
warn("Failed to lookup lifecycle participants", e);
}
Collection<ClassLoader> scannedRealms = new HashSet<ClassLoader>();
for (MavenProject project : projects) {
ClassLoader projectRealm = project.getClassRealm();
if (projectRealm != null && scannedRealms.add(projectRealm)) {
Thread.currentThread().setContextClassLoader(projectRealm);
try {
lifecycleListeners.addAll(getContainer().lookupList(AbstractMavenLifecycleParticipant.class));
}
catch (ComponentLookupException e) {
// this is just silly, lookupList should return an empty list!
warn("Failed to lookup lifecycle participants", e);
}
}
}
}
finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
}
return lifecycleListeners;
}
}
@@ -12,7 +12,10 @@ import com.intellij.util.text.VersionComparatorUtil;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
import org.apache.commons.cli.ParseException;
import org.apache.maven.*;
import org.apache.maven.AbstractMavenLifecycleParticipant;
import org.apache.maven.DefaultMaven;
import org.apache.maven.Maven;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.InvalidRepositoryException;
import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -38,9 +41,11 @@ import org.apache.maven.model.validation.ModelValidator;
import org.apache.maven.plugin.LegacySupport;
import org.apache.maven.plugin.PluginDescriptorCache;
import org.apache.maven.plugin.internal.PluginDependenciesResolver;
import org.apache.maven.profiles.activation.*;
import org.apache.maven.profiles.activation.JdkPrefixProfileActivator;
import org.apache.maven.profiles.activation.OperatingSystemProfileActivator;
import org.apache.maven.profiles.activation.ProfileActivator;
import org.apache.maven.profiles.activation.SystemPropertyProfileActivator;
import org.apache.maven.project.*;
import org.apache.maven.project.ProjectDependenciesResolver;
import org.apache.maven.project.inheritance.DefaultModelInheritanceAssembler;
import org.apache.maven.project.interpolation.AbstractStringBasedModelInterpolator;
import org.apache.maven.project.interpolation.ModelInterpolationException;
@@ -48,7 +53,6 @@ import org.apache.maven.project.path.DefaultPathTranslator;
import org.apache.maven.project.path.PathTranslator;
import org.apache.maven.project.validation.ModelValidationResult;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.session.scope.internal.SessionScope;
import org.apache.maven.settings.Settings;
import org.apache.maven.settings.building.*;
import org.apache.maven.shared.dependency.tree.DependencyNode;
@@ -56,7 +60,6 @@ import org.apache.maven.shared.dependency.tree.DependencyTreeResolutionListener;
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.classworlds.ClassWorld;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.context.DefaultContext;
@@ -80,8 +83,8 @@ import org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.model.*;
import org.jetbrains.idea.maven.server.embedder.*;
import org.jetbrains.idea.maven.server.embedder.MavenExecutionResult;
import org.jetbrains.idea.maven.server.embedder.*;
import java.io.File;
import java.lang.reflect.Constructor;
@@ -257,6 +260,12 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
myRepositorySystem = getComponent(RepositorySystem.class);
}
@NotNull
@Override
protected PlexusContainer getContainer() {
return myContainer;
}
private static Settings buildSettings(SettingsBuilder builder,
MavenServerSettings settings,
Properties systemProperties,
@@ -288,15 +297,6 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
return result;
}
private static void warn(String message, Throwable e) {
try {
Maven3ServerGlobals.getLogger().warn(new RuntimeException(message, e));
}
catch (RemoteException e1) {
throw new RuntimeException(e1);
}
}
private static MavenExecutionResult handleException(Throwable e) {
if (e instanceof Error) throw (Error)e;
@@ -611,50 +611,6 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
return MavenEffectivePomDumper.evaluateEffectivePom(this, file, activeProfiles, inactiveProfiles);
}
@Override
public void executeWithMavenSession(MavenExecutionRequest request, Runnable runnable) {
DefaultMaven maven = (DefaultMaven)getComponent(Maven.class);
SessionScope sessionScope = getComponent(SessionScope.class);
sessionScope.enter();
try {
RepositorySystemSession repositorySession = maven.newRepositorySession(request);
request.getProjectBuildingRequest().setRepositorySession(repositorySession);
MavenSession mavenSession = new MavenSession(myContainer, repositorySession, request, new DefaultMavenExecutionResult());
sessionScope.seed(MavenSession.class, mavenSession);
LegacySupport legacySupport = getComponent(LegacySupport.class);
MavenSession oldSession = legacySupport.getSession();
legacySupport.setSession(mavenSession);
// adapted from {@link DefaultMaven#doExecute(MavenExecutionRequest)}
try {
for (AbstractMavenLifecycleParticipant listener : getLifecycleParticipants(Collections.<MavenProject>emptyList())) {
listener.afterSessionStart(mavenSession);
}
}
catch (MavenExecutionException e) {
throw new RuntimeException(e);
}
try {
runnable.run();
}
finally {
legacySupport.setSession(oldSession);
}
}
finally {
sessionScope.exit();
}
}
@NotNull
public Collection<MavenExecutionResult> doResolveProject(@NotNull final Collection<File> files,
@NotNull final List<String> activeProfiles,
@@ -736,7 +692,7 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
}));
for (Dependency dependency : dependencies) {
final Artifact artifact = winnerDependencyMap.get(dependency);
if(artifact != null) {
if (artifact != null) {
artifacts.add(artifact);
resolveAsModule(artifact);
}
@@ -1022,7 +978,7 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
@NotNull Collection<MavenProjectProblem> problems,
@Nullable Collection<MavenId> unresolvedArtifacts) throws RemoteException {
for (Throwable each : exceptions) {
if(each == null) continue;
if (each == null) continue;
Maven3ServerGlobals.getLogger().info(each);
@@ -1370,11 +1326,11 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
((CustomMaven3ArtifactFactory)artifactFactory).reset();
}
final ArtifactResolver artifactResolver = getComponent(ArtifactResolver.class);
if(artifactResolver instanceof CustomMaven3ArtifactResolver) {
if (artifactResolver instanceof CustomMaven3ArtifactResolver) {
((CustomMaven3ArtifactResolver)artifactResolver).reset();
}
final RepositoryMetadataManager repositoryMetadataManager = getComponent(RepositoryMetadataManager.class);
if(repositoryMetadataManager instanceof CustomMaven3RepositoryMetadataManager) {
if (repositoryMetadataManager instanceof CustomMaven3RepositoryMetadataManager) {
((CustomMaven3RepositoryMetadataManager)repositoryMetadataManager).reset();
}
//((CustomWagonManager)getComponent(WagonManager.class)).reset();
@@ -2,7 +2,6 @@
package org.jetbrains.idea.maven.server;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.SystemInfoRt;
import com.intellij.openapi.util.text.StringUtilRt;
import com.intellij.util.ExceptionUtilRt;
import com.intellij.util.Function;
@@ -40,7 +39,10 @@ import org.apache.maven.model.validation.ModelValidator;
import org.apache.maven.plugin.LegacySupport;
import org.apache.maven.plugin.PluginDescriptorCache;
import org.apache.maven.plugin.internal.PluginDependenciesResolver;
import org.apache.maven.profiles.activation.*;
import org.apache.maven.profiles.activation.JdkPrefixProfileActivator;
import org.apache.maven.profiles.activation.OperatingSystemProfileActivator;
import org.apache.maven.profiles.activation.ProfileActivator;
import org.apache.maven.profiles.activation.SystemPropertyProfileActivator;
import org.apache.maven.project.ProjectDependenciesResolver;
import org.apache.maven.project.*;
import org.apache.maven.project.inheritance.DefaultModelInheritanceAssembler;
@@ -68,7 +70,7 @@ import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea .maven.model.*;
import org.jetbrains.idea.maven.model.*;
import org.jetbrains.idea.maven.server.embedder.MavenExecutionResult;
import org.jetbrains.idea.maven.server.embedder.*;
import org.sonatype.aether.RepositorySystemSession;
@@ -228,6 +230,12 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
myRepositorySystem = getComponent(RepositorySystem.class);
}
@Override
@NotNull
protected PlexusContainer getContainer() {
return myContainer;
}
private static Settings buildSettings(SettingsBuilder builder,
MavenServerSettings settings,
Properties systemProperties,
@@ -259,15 +267,6 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
return result;
}
private static void warn(String message, Throwable e) {
try {
Maven3ServerGlobals.getLogger().warn(new RuntimeException(message, e));
}
catch (RemoteException e1) {
throw new RuntimeException(e1);
}
}
private static MavenExecutionResult handleException(Throwable e) {
if (e instanceof Error) throw (Error)e;
@@ -929,7 +928,7 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
@NotNull Collection<MavenProjectProblem> problems,
@Nullable Collection<MavenId> unresolvedArtifacts) throws RemoteException {
for (Throwable each : exceptions) {
if(each == null) continue;
if (each == null) continue;
Maven3ServerGlobals.getLogger().info(each);
@@ -1185,11 +1184,11 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
((CustomMaven3ArtifactFactory)artifactFactory).reset();
}
final ArtifactResolver artifactResolver = getComponent(ArtifactResolver.class);
if(artifactResolver instanceof CustomMaven30ArtifactResolver) {
if (artifactResolver instanceof CustomMaven30ArtifactResolver) {
((CustomMaven30ArtifactResolver)artifactResolver).reset();
}
final RepositoryMetadataManager repositoryMetadataManager = getComponent(RepositoryMetadataManager.class);
if(repositoryMetadataManager instanceof CustomMaven3RepositoryMetadataManager) {
if (repositoryMetadataManager instanceof CustomMaven3RepositoryMetadataManager) {
((CustomMaven3RepositoryMetadataManager)repositoryMetadataManager).reset();
}
//((CustomWagonManager)getComponent(WagonManager.class)).reset();
@@ -12,7 +12,10 @@ import com.intellij.util.text.VersionComparatorUtil;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
import org.apache.commons.cli.ParseException;
import org.apache.maven.*;
import org.apache.maven.AbstractMavenLifecycleParticipant;
import org.apache.maven.DefaultMaven;
import org.apache.maven.Maven;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.InvalidRepositoryException;
import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -39,7 +42,6 @@ import org.apache.maven.plugin.LegacySupport;
import org.apache.maven.plugin.PluginDescriptorCache;
import org.apache.maven.plugin.internal.PluginDependenciesResolver;
import org.apache.maven.profiles.activation.*;
import org.apache.maven.project.ProjectDependenciesResolver;
import org.apache.maven.project.*;
import org.apache.maven.project.inheritance.DefaultModelInheritanceAssembler;
import org.apache.maven.project.interpolation.AbstractStringBasedModelInterpolator;
@@ -253,6 +255,12 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
myRepositorySystem = getComponent(RepositorySystem.class);
}
@NotNull
@Override
protected PlexusContainer getContainer() {
return myContainer;
}
private static Settings buildSettings(SettingsBuilder builder,
MavenServerSettings settings,
Properties systemProperties,
@@ -284,15 +292,6 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
return result;
}
private static void warn(String message, Throwable e) {
try {
Maven3ServerGlobals.getLogger().warn(new RuntimeException(message, e));
}
catch (RemoteException e1) {
throw new RuntimeException(e1);
}
}
private static MavenExecutionResult handleException(Throwable e) {
if (e instanceof Error) throw (Error)e;
@@ -607,38 +606,6 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
return MavenEffectivePomDumper.evaluateEffectivePom(this, file, activeProfiles, inactiveProfiles);
}
@Override
public void executeWithMavenSession(MavenExecutionRequest request, Runnable runnable) {
DefaultMaven maven = (DefaultMaven)getComponent(Maven.class);
RepositorySystemSession repositorySession = maven.newRepositorySession(request);
request.getProjectBuildingRequest().setRepositorySession(repositorySession);
MavenSession mavenSession = new MavenSession(myContainer, repositorySession, request, new DefaultMavenExecutionResult());
LegacySupport legacySupport = getComponent(LegacySupport.class);
MavenSession oldSession = legacySupport.getSession();
legacySupport.setSession(mavenSession);
// adapted from {@link DefaultMaven#doExecute(MavenExecutionRequest)}
try {
for (AbstractMavenLifecycleParticipant listener : getLifecycleParticipants(Collections.<MavenProject>emptyList())) {
listener.afterSessionStart(mavenSession);
}
}
catch (MavenExecutionException e) {
throw new RuntimeException(e);
}
try {
runnable.run();
}
finally {
legacySupport.setSession(oldSession);
}
}
@NotNull
public Collection<MavenExecutionResult> doResolveProject(@NotNull final Collection<File> files,
@NotNull final List<String> activeProfiles,
@@ -720,7 +687,7 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
}));
for (Dependency dependency : dependencies) {
final Artifact artifact = winnerDependencyMap.get(dependency);
if(artifact != null) {
if (artifact != null) {
artifacts.add(artifact);
resolveAsModule(artifact);
}
@@ -1006,7 +973,7 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
@NotNull Collection<MavenProjectProblem> problems,
@Nullable Collection<MavenId> unresolvedArtifacts) throws RemoteException {
for (Throwable each : exceptions) {
if(each == null) continue;
if (each == null) continue;
Maven3ServerGlobals.getLogger().info(each);
@@ -1258,7 +1225,8 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
return RepositoryUtils.toArtifact(artifactResult.getArtifact());
}
}
@Override
@Override
@NotNull
protected List<ArtifactRepository> convertRepositories(List<MavenRemoteRepository> repositories) throws RemoteException {
List<ArtifactRepository> result = new ArrayList<ArtifactRepository>();
@@ -1345,11 +1313,11 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
((CustomMaven3ArtifactFactory)artifactFactory).reset();
}
final ArtifactResolver artifactResolver = getComponent(ArtifactResolver.class);
if(artifactResolver instanceof CustomMaven3ArtifactResolver) {
if (artifactResolver instanceof CustomMaven3ArtifactResolver) {
((CustomMaven3ArtifactResolver)artifactResolver).reset();
}
final RepositoryMetadataManager repositoryMetadataManager = getComponent(RepositoryMetadataManager.class);
if(repositoryMetadataManager instanceof CustomMaven3RepositoryMetadataManager) {
if (repositoryMetadataManager instanceof CustomMaven3RepositoryMetadataManager) {
((CustomMaven3RepositoryMetadataManager)repositoryMetadataManager).reset();
}
//((CustomWagonManager)getComponent(WagonManager.class)).reset();