mirror of https://github.com/apache/maven.git
[MNG-7653] Integrate Resolver 2.x onSessionClose (#1301)
Implement onSessionClose and "resolver 2.x way for sessions"... As digging happens in same area, some other "resolver configuration" issues resolved as well. Important: contains a "hack" to fix issue in alpha-2, that is marked with TODO to remove once alpha-3+ used. --- https://issues.apache.org/jira/browse/MNG-7653 https://issues.apache.org/jira/browse/MNG-7935 https://issues.apache.org/jira/browse/MNG-7936
This commit is contained in:
parent
143af9b085
commit
e89b6fd53f
|
@ -36,6 +36,7 @@ import java.util.LinkedHashSet;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
@ -73,8 +74,8 @@ import org.apache.maven.project.ProjectBuilder;
|
|||
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.DefaultRepositorySystemSession;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.RepositorySystemSession.CloseableSession;
|
||||
import org.eclipse.aether.repository.WorkspaceReader;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -214,9 +215,9 @@ public class DefaultMaven implements Maven {
|
|||
// so that @SessionScoped components can be @Injected into AbstractLifecycleParticipants.
|
||||
//
|
||||
sessionScope.enter();
|
||||
try {
|
||||
DefaultRepositorySystemSession repoSession = (DefaultRepositorySystemSession) newRepositorySession(request);
|
||||
MavenSession session = new MavenSession(container, repoSession, request, result);
|
||||
try (CloseableSession closeableSession = newCloseableSession(request)) {
|
||||
AtomicReference<CloseableSession> closeableSessionRef = new AtomicReference<>(closeableSession);
|
||||
MavenSession session = new MavenSession(closeableSessionRef::get, request, result);
|
||||
session.setSession(defaultSessionFactory.getSession(session));
|
||||
|
||||
sessionScope.seed(MavenSession.class, session);
|
||||
|
@ -225,7 +226,7 @@ public class DefaultMaven implements Maven {
|
|||
|
||||
legacySupport.setSession(session);
|
||||
|
||||
return doExecute(request, session, result, repoSession);
|
||||
return doExecute(request, session, result, closeableSessionRef);
|
||||
} finally {
|
||||
sessionScope.exit();
|
||||
}
|
||||
|
@ -235,7 +236,7 @@ public class DefaultMaven implements Maven {
|
|||
MavenExecutionRequest request,
|
||||
MavenSession session,
|
||||
MavenExecutionResult result,
|
||||
DefaultRepositorySystemSession repoSession) {
|
||||
AtomicReference<CloseableSession> closeableSessionRef) {
|
||||
try {
|
||||
afterSessionStart(session);
|
||||
} catch (MavenExecutionException e) {
|
||||
|
@ -244,7 +245,11 @@ public class DefaultMaven implements Maven {
|
|||
|
||||
try {
|
||||
WorkspaceReader reactorReader = container.lookup(WorkspaceReader.class, ReactorReader.HINT);
|
||||
repoSession.setWorkspaceReader(reactorReader);
|
||||
closeableSessionRef.set(closeableSessionRef
|
||||
.get()
|
||||
.copy()
|
||||
.setWorkspaceReader(reactorReader)
|
||||
.build());
|
||||
} catch (ComponentLookupException e) {
|
||||
return addExceptionToResult(result, e);
|
||||
}
|
||||
|
@ -265,11 +270,10 @@ public class DefaultMaven implements Maven {
|
|||
}
|
||||
|
||||
try {
|
||||
setupWorkspaceReader(session, repoSession);
|
||||
closeableSessionRef.set(setupWorkspaceReader(session, closeableSessionRef.get()));
|
||||
} catch (ComponentLookupException e) {
|
||||
return addExceptionToResult(result, e);
|
||||
}
|
||||
repoSession.setReadOnly();
|
||||
try {
|
||||
afterProjectsRead(session);
|
||||
} catch (MavenExecutionException e) {
|
||||
|
@ -336,7 +340,7 @@ public class DefaultMaven implements Maven {
|
|||
return result;
|
||||
}
|
||||
|
||||
private void setupWorkspaceReader(MavenSession session, DefaultRepositorySystemSession repoSession)
|
||||
private CloseableSession setupWorkspaceReader(MavenSession session, CloseableSession repoSession)
|
||||
throws ComponentLookupException {
|
||||
// Desired order of precedence for workspace readers before querying the local artifact repositories
|
||||
Set<WorkspaceReader> workspaceReaders = new LinkedHashSet<>();
|
||||
|
@ -350,7 +354,10 @@ public class DefaultMaven implements Maven {
|
|||
}
|
||||
// 3) .. n) Project-scoped workspace readers
|
||||
workspaceReaders.addAll(getProjectScopedExtensionComponents(session.getProjects(), WorkspaceReader.class));
|
||||
repoSession.setWorkspaceReader(MavenChainedWorkspaceReader.of(workspaceReaders));
|
||||
return repoSession
|
||||
.copy()
|
||||
.setWorkspaceReader(MavenChainedWorkspaceReader.of(workspaceReaders))
|
||||
.build();
|
||||
}
|
||||
|
||||
private void afterSessionStart(MavenSession session) throws MavenExecutionException {
|
||||
|
@ -404,8 +411,18 @@ public class DefaultMaven implements Maven {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Nobody should ever use this method.
|
||||
*
|
||||
* @deprecated If you use this method and your code is not in Maven Core, stop doing this.
|
||||
*/
|
||||
@Deprecated
|
||||
public RepositorySystemSession newRepositorySession(MavenExecutionRequest request) {
|
||||
return repositorySessionFactory.newRepositorySession(request);
|
||||
return newCloseableSession(request);
|
||||
}
|
||||
|
||||
private CloseableSession newCloseableSession(MavenExecutionRequest request) {
|
||||
return repositorySessionFactory.newRepositorySessionBuilder(request).build();
|
||||
}
|
||||
|
||||
private void validateLocalRepository(MavenExecutionRequest request) throws IOException {
|
||||
|
|
|
@ -66,6 +66,10 @@ public class DefaultMavenExecutionRequest implements MavenExecutionRequest {
|
|||
|
||||
private boolean cacheNotFound = false;
|
||||
|
||||
private boolean ignoreMissingArtifactDescriptor = true;
|
||||
|
||||
private boolean ignoreInvalidArtifactDescriptor = true;
|
||||
|
||||
private List<Proxy> proxies;
|
||||
|
||||
private List<Server> servers;
|
||||
|
@ -174,6 +178,8 @@ public class DefaultMavenExecutionRequest implements MavenExecutionRequest {
|
|||
copy.setInteractiveMode(original.isInteractiveMode());
|
||||
copy.setCacheNotFound(original.isCacheNotFound());
|
||||
copy.setCacheTransferError(original.isCacheTransferError());
|
||||
copy.setIgnoreMissingArtifactDescriptor(original.isIgnoreMissingArtifactDescriptor());
|
||||
copy.setIgnoreInvalidArtifactDescriptor(original.isIgnoreInvalidArtifactDescriptor());
|
||||
copy.setProxies(original.getProxies());
|
||||
copy.setServers(original.getServers());
|
||||
copy.setMirrors(original.getMirrors());
|
||||
|
@ -1034,6 +1040,28 @@ public class DefaultMavenExecutionRequest implements MavenExecutionRequest {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIgnoreMissingArtifactDescriptor() {
|
||||
return ignoreMissingArtifactDescriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MavenExecutionRequest setIgnoreMissingArtifactDescriptor(boolean ignoreMissing) {
|
||||
this.ignoreMissingArtifactDescriptor = ignoreMissing;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIgnoreInvalidArtifactDescriptor() {
|
||||
return ignoreInvalidArtifactDescriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MavenExecutionRequest setIgnoreInvalidArtifactDescriptor(boolean ignoreInvalid) {
|
||||
this.ignoreInvalidArtifactDescriptor = ignoreInvalid;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseLegacyLocalRepository() {
|
||||
return this.useLegacyLocalRepositoryManager;
|
||||
|
|
|
@ -285,6 +285,26 @@ public interface MavenExecutionRequest {
|
|||
|
||||
MavenExecutionRequest setCacheNotFound(boolean cacheNotFound);
|
||||
|
||||
/**
|
||||
* @since 4.0.0
|
||||
*/
|
||||
boolean isIgnoreMissingArtifactDescriptor();
|
||||
|
||||
/**
|
||||
* @since 4.0.0
|
||||
*/
|
||||
MavenExecutionRequest setIgnoreMissingArtifactDescriptor(boolean ignoreMissing);
|
||||
|
||||
/**
|
||||
* @since 4.0.0
|
||||
*/
|
||||
boolean isIgnoreInvalidArtifactDescriptor();
|
||||
|
||||
/**
|
||||
* @since 4.0.0
|
||||
*/
|
||||
MavenExecutionRequest setIgnoreInvalidArtifactDescriptor(boolean ignoreInvalid);
|
||||
|
||||
// Profiles
|
||||
List<Profile> getProfiles();
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import java.util.Map;
|
|||
import java.util.Properties;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.maven.api.Session;
|
||||
|
@ -46,18 +47,20 @@ import org.codehaus.plexus.PlexusContainer;
|
|||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
/**
|
||||
* A Maven execution session.
|
||||
*
|
||||
*/
|
||||
public class MavenSession implements Cloneable {
|
||||
private MavenExecutionRequest request;
|
||||
private final MavenExecutionRequest request;
|
||||
|
||||
private MavenExecutionResult result;
|
||||
private final MavenExecutionResult result;
|
||||
|
||||
private RepositorySystemSession repositorySession;
|
||||
private final Supplier<RepositorySystemSession> repositorySystemSessionSupplier;
|
||||
|
||||
private Properties executionProperties;
|
||||
private final Properties executionProperties;
|
||||
|
||||
private ThreadLocal<MavenProject> currentProject = new ThreadLocal<>();
|
||||
|
||||
|
@ -257,7 +260,7 @@ public class MavenSession implements Cloneable {
|
|||
}
|
||||
|
||||
public RepositorySystemSession getRepositorySession() {
|
||||
return repositorySession;
|
||||
return repositorySystemSessionSupplier.get();
|
||||
}
|
||||
|
||||
private Map<String, MavenProject> projectMap;
|
||||
|
@ -282,7 +285,7 @@ public class MavenSession implements Cloneable {
|
|||
// Deprecated
|
||||
//
|
||||
|
||||
private PlexusContainer container;
|
||||
private final PlexusContainer container;
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
|
@ -294,6 +297,21 @@ public class MavenSession implements Cloneable {
|
|||
return projectMap;
|
||||
}
|
||||
|
||||
public MavenSession(
|
||||
Supplier<RepositorySystemSession> repositorySystemSessionSupplier,
|
||||
MavenExecutionRequest request,
|
||||
MavenExecutionResult result) {
|
||||
this.container = null;
|
||||
this.request = requireNonNull(request);
|
||||
this.result = requireNonNull(result);
|
||||
this.settings = adaptSettings(request);
|
||||
this.repositorySystemSessionSupplier = requireNonNull(repositorySystemSessionSupplier);
|
||||
Properties executionProperties = new Properties();
|
||||
executionProperties.putAll(request.getSystemProperties());
|
||||
executionProperties.putAll(request.getUserProperties());
|
||||
this.executionProperties = executionProperties;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public MavenSession(
|
||||
PlexusContainer container,
|
||||
|
@ -304,7 +322,11 @@ public class MavenSession implements Cloneable {
|
|||
this.request = request;
|
||||
this.result = result;
|
||||
this.settings = adaptSettings(request);
|
||||
this.repositorySession = repositorySession;
|
||||
this.repositorySystemSessionSupplier = () -> repositorySession;
|
||||
Properties executionProperties = new Properties();
|
||||
executionProperties.putAll(request.getSystemProperties());
|
||||
executionProperties.putAll(request.getUserProperties());
|
||||
this.executionProperties = executionProperties;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
|
@ -363,6 +385,8 @@ public class MavenSession implements Cloneable {
|
|||
this.request.setGoals(goals);
|
||||
this.request.setBaseDirectory((executionRootDir != null) ? new File(executionRootDir) : null);
|
||||
this.request.setStartTime(startTime);
|
||||
this.result = null;
|
||||
this.repositorySystemSessionSupplier = () -> null;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
|
@ -375,7 +399,12 @@ public class MavenSession implements Cloneable {
|
|||
this.request = request;
|
||||
this.result = result;
|
||||
this.settings = adaptSettings(request);
|
||||
Properties executionProperties = new Properties();
|
||||
executionProperties.putAll(request.getSystemProperties());
|
||||
executionProperties.putAll(request.getUserProperties());
|
||||
this.executionProperties = executionProperties;
|
||||
setProjects(projects);
|
||||
this.repositorySystemSessionSupplier = () -> null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -431,12 +460,6 @@ public class MavenSession implements Cloneable {
|
|||
*/
|
||||
@Deprecated
|
||||
public Properties getExecutionProperties() {
|
||||
if (executionProperties == null) {
|
||||
executionProperties = new Properties();
|
||||
executionProperties.putAll(request.getSystemProperties());
|
||||
executionProperties.putAll(request.getUserProperties());
|
||||
}
|
||||
|
||||
return executionProperties;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,8 +21,10 @@ package org.apache.maven.internal.aether;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
|
@ -33,6 +35,8 @@ import java.util.stream.Collectors;
|
|||
import org.apache.maven.RepositoryUtils;
|
||||
import org.apache.maven.api.xml.XmlNode;
|
||||
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.artifact.repository.Authentication;
|
||||
import org.apache.maven.bridge.MavenRepositorySystem;
|
||||
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
|
||||
import org.apache.maven.execution.MavenExecutionRequest;
|
||||
|
@ -50,27 +54,29 @@ import org.apache.maven.settings.crypto.SettingsDecrypter;
|
|||
import org.apache.maven.settings.crypto.SettingsDecryptionResult;
|
||||
import org.codehaus.plexus.configuration.PlexusConfiguration;
|
||||
import org.eclipse.aether.ConfigurationProperties;
|
||||
import org.eclipse.aether.DefaultRepositorySystemSession;
|
||||
import org.eclipse.aether.RepositoryListener;
|
||||
import org.eclipse.aether.RepositorySystem;
|
||||
import org.eclipse.aether.repository.LocalRepository;
|
||||
import org.eclipse.aether.repository.LocalRepositoryManager;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.RepositorySystemSession.SessionBuilder;
|
||||
import org.eclipse.aether.repository.AuthenticationContext;
|
||||
import org.eclipse.aether.repository.AuthenticationSelector;
|
||||
import org.eclipse.aether.repository.ProxySelector;
|
||||
import org.eclipse.aether.repository.RemoteRepository;
|
||||
import org.eclipse.aether.repository.RepositoryPolicy;
|
||||
import org.eclipse.aether.repository.WorkspaceReader;
|
||||
import org.eclipse.aether.resolution.ResolutionErrorPolicy;
|
||||
import org.eclipse.aether.util.ConfigUtils;
|
||||
import org.eclipse.aether.util.listener.ChainedRepositoryListener;
|
||||
import org.eclipse.aether.util.repository.AuthenticationBuilder;
|
||||
import org.eclipse.aether.util.repository.ChainedLocalRepositoryManager;
|
||||
import org.eclipse.aether.util.repository.DefaultAuthenticationSelector;
|
||||
import org.eclipse.aether.util.repository.DefaultMirrorSelector;
|
||||
import org.eclipse.aether.util.repository.DefaultProxySelector;
|
||||
import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
|
||||
import org.eclipse.aether.util.repository.SimpleResolutionErrorPolicy;
|
||||
import org.eclipse.sisu.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
/**
|
||||
* @since 3.3.0
|
||||
*/
|
||||
|
@ -90,7 +96,9 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
* Default: {@code true}, will ignore availability from tail local repositories.
|
||||
*
|
||||
* @since 3.9.0
|
||||
* @deprecated Use {@link ChainedLocalRepositoryManager#IGNORE_TAIL_AVAILABILITY} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
private static final String MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY = "maven.repo.local.tail.ignoreAvailability";
|
||||
|
||||
/**
|
||||
|
@ -129,7 +137,7 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
|
||||
private static final String JDK_HTTP_TRANSPORTER_PRIORITY_KEY = "aether.priority.JdkTransporterFactory";
|
||||
|
||||
private static final String NATIVE_FILE_TRANSPORTER_PRIORITY_KEY = "aether.priority.FileTransporterFactory";
|
||||
private static final String FILE_TRANSPORTER_PRIORITY_KEY = "aether.priority.FileTransporterFactory";
|
||||
|
||||
private static final String RESOLVER_MAX_PRIORITY = String.valueOf(Float.MAX_VALUE);
|
||||
|
||||
|
@ -145,8 +153,6 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
|
||||
private final EventSpyDispatcher eventSpyDispatcher;
|
||||
|
||||
private final MavenRepositorySystem mavenRepositorySystem;
|
||||
|
||||
private final RuntimeInformation runtimeInformation;
|
||||
|
||||
@SuppressWarnings("checkstyle:ParameterNumber")
|
||||
|
@ -157,20 +163,23 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
@Nullable @Named("ide") WorkspaceReader workspaceRepository,
|
||||
SettingsDecrypter settingsDecrypter,
|
||||
EventSpyDispatcher eventSpyDispatcher,
|
||||
MavenRepositorySystem mavenRepositorySystem,
|
||||
RuntimeInformation runtimeInformation) {
|
||||
this.artifactHandlerManager = artifactHandlerManager;
|
||||
this.repoSystem = repoSystem;
|
||||
this.workspaceRepository = workspaceRepository;
|
||||
this.settingsDecrypter = settingsDecrypter;
|
||||
this.eventSpyDispatcher = eventSpyDispatcher;
|
||||
this.mavenRepositorySystem = mavenRepositorySystem;
|
||||
this.runtimeInformation = runtimeInformation;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public RepositorySystemSession newRepositorySession(MavenExecutionRequest request) {
|
||||
return newRepositorySessionBuilder(request).build();
|
||||
}
|
||||
|
||||
@SuppressWarnings("checkstyle:methodLength")
|
||||
public DefaultRepositorySystemSession newRepositorySession(MavenExecutionRequest request) {
|
||||
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
|
||||
public SessionBuilder newRepositorySessionBuilder(MavenExecutionRequest request) {
|
||||
SessionBuilder session = MavenRepositorySystemUtils.newSession(repoSystem.createSessionBuilder());
|
||||
session.setCache(request.getRepositoryCache());
|
||||
|
||||
Map<Object, Object> configProps = new LinkedHashMap<>();
|
||||
|
@ -183,6 +192,25 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
configProps.putAll(request.getSystemProperties());
|
||||
configProps.putAll(request.getUserProperties());
|
||||
|
||||
// we need to "translate" this
|
||||
if (configProps.containsKey(MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY)) {
|
||||
logger.warn(
|
||||
"User property {} is DEPRECATED, switch to {}",
|
||||
MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY,
|
||||
ChainedLocalRepositoryManager.IGNORE_TAIL_AVAILABILITY);
|
||||
configProps.put(
|
||||
ChainedLocalRepositoryManager.IGNORE_TAIL_AVAILABILITY,
|
||||
configProps.get(MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY));
|
||||
}
|
||||
|
||||
// HACK: Resolver 2.0.0-alpha-2 carries a bad change:
|
||||
// https://github.com/apache/maven-resolver/commit/178cfba9f3889f7e942a6a0d74716355b01a78f5
|
||||
// that is fixed in later versions by MRESOLVER-437 https://github.com/apache/maven-resolver/pull/373
|
||||
// TODO: remove this hack below once Resolver PR above is applied
|
||||
if (!configProps.containsKey(ConfigurationProperties.HTTP_EXPECT_CONTINUE)) {
|
||||
configProps.put(ConfigurationProperties.HTTP_EXPECT_CONTINUE, Boolean.FALSE.toString());
|
||||
}
|
||||
|
||||
session.setOffline(request.isOffline());
|
||||
session.setChecksumPolicy(request.getGlobalChecksumPolicy());
|
||||
session.setUpdatePolicy(
|
||||
|
@ -200,6 +228,9 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
session.setResolutionErrorPolicy(
|
||||
new SimpleResolutionErrorPolicy(errorPolicy, errorPolicy | ResolutionErrorPolicy.CACHE_NOT_FOUND));
|
||||
|
||||
session.setArtifactDescriptorPolicy(new SimpleArtifactDescriptorPolicy(
|
||||
request.isIgnoreMissingArtifactDescriptor(), request.isIgnoreInvalidArtifactDescriptor()));
|
||||
|
||||
session.setArtifactTypeRegistry(RepositoryUtils.newArtifactTypeRegistry(artifactHandlerManager));
|
||||
|
||||
session.setWorkspaceReader(
|
||||
|
@ -336,7 +367,7 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
// The "default" mode (user did not set anything) from now on defaults to AUTO
|
||||
} else if (MAVEN_RESOLVER_TRANSPORT_JDK.equals(transport)) {
|
||||
// Make sure (whatever extra priority is set) that resolver file/jdk is selected
|
||||
configProps.put(NATIVE_FILE_TRANSPORTER_PRIORITY_KEY, RESOLVER_MAX_PRIORITY);
|
||||
configProps.put(FILE_TRANSPORTER_PRIORITY_KEY, RESOLVER_MAX_PRIORITY);
|
||||
configProps.put(JDK_HTTP_TRANSPORTER_PRIORITY_KEY, RESOLVER_MAX_PRIORITY);
|
||||
} else if (MAVEN_RESOLVER_TRANSPORT_APACHE.equals(transport)
|
||||
|| MAVEN_RESOLVER_TRANSPORT_NATIVE.equals(transport)) {
|
||||
|
@ -347,7 +378,7 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
MAVEN_RESOLVER_TRANSPORT_APACHE);
|
||||
}
|
||||
// Make sure (whatever extra priority is set) that resolver file/apache is selected
|
||||
configProps.put(NATIVE_FILE_TRANSPORTER_PRIORITY_KEY, RESOLVER_MAX_PRIORITY);
|
||||
configProps.put(FILE_TRANSPORTER_PRIORITY_KEY, RESOLVER_MAX_PRIORITY);
|
||||
configProps.put(APACHE_HTTP_TRANSPORTER_PRIORITY_KEY, RESOLVER_MAX_PRIORITY);
|
||||
} else if (MAVEN_RESOLVER_TRANSPORT_WAGON.equals(transport)) {
|
||||
// Make sure (whatever extra priority is set) that wagon is selected
|
||||
|
@ -365,52 +396,38 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
|
||||
session.setTransferListener(request.getTransferListener());
|
||||
|
||||
session.setRepositoryListener(eventSpyDispatcher.chainListener(new LoggingRepositoryListener(logger)));
|
||||
RepositoryListener repositoryListener = eventSpyDispatcher.chainListener(new LoggingRepositoryListener(logger));
|
||||
|
||||
boolean recordReverseTree = ConfigUtils.getBoolean(session, false, MAVEN_REPO_LOCAL_RECORD_REVERSE_TREE);
|
||||
boolean recordReverseTree = configProps.containsKey(MAVEN_REPO_LOCAL_RECORD_REVERSE_TREE)
|
||||
&& Boolean.parseBoolean((String) configProps.get(MAVEN_REPO_LOCAL_RECORD_REVERSE_TREE));
|
||||
if (recordReverseTree) {
|
||||
session.setRepositoryListener(new ChainedRepositoryListener(
|
||||
session.getRepositoryListener(), new ReverseTreeRepositoryListener()));
|
||||
repositoryListener = new ChainedRepositoryListener(repositoryListener, new ReverseTreeRepositoryListener());
|
||||
}
|
||||
session.setRepositoryListener(repositoryListener);
|
||||
|
||||
mavenRepositorySystem.injectMirror(request.getRemoteRepositories(), request.getMirrors());
|
||||
mavenRepositorySystem.injectProxy(session, request.getRemoteRepositories());
|
||||
mavenRepositorySystem.injectAuthentication(session, request.getRemoteRepositories());
|
||||
injectMirror(request.getRemoteRepositories(), request.getMirrors());
|
||||
injectProxy(proxySelector, request.getRemoteRepositories());
|
||||
injectAuthentication(authSelector, request.getRemoteRepositories());
|
||||
|
||||
mavenRepositorySystem.injectMirror(request.getPluginArtifactRepositories(), request.getMirrors());
|
||||
mavenRepositorySystem.injectProxy(session, request.getPluginArtifactRepositories());
|
||||
mavenRepositorySystem.injectAuthentication(session, request.getPluginArtifactRepositories());
|
||||
injectMirror(request.getPluginArtifactRepositories(), request.getMirrors());
|
||||
injectProxy(proxySelector, request.getPluginArtifactRepositories());
|
||||
injectAuthentication(authSelector, request.getPluginArtifactRepositories());
|
||||
|
||||
setUpLocalRepositoryManager(request, session);
|
||||
ArrayList<File> paths = new ArrayList<>();
|
||||
paths.add(new File(request.getLocalRepository().getBasedir()));
|
||||
String localRepoTail = (String) configProps.get(MAVEN_REPO_LOCAL_TAIL);
|
||||
if (localRepoTail != null) {
|
||||
Arrays.stream(localRepoTail.split(","))
|
||||
.filter(p -> p != null && !p.trim().isEmpty())
|
||||
.map(File::new)
|
||||
.forEach(paths::add);
|
||||
}
|
||||
session.withLocalRepositoryBaseDirectories(paths);
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
private void setUpLocalRepositoryManager(MavenExecutionRequest request, DefaultRepositorySystemSession session) {
|
||||
LocalRepository localRepo =
|
||||
new LocalRepository(request.getLocalRepository().getBasedir());
|
||||
|
||||
LocalRepositoryManager lrm = repoSystem.newLocalRepositoryManager(session, localRepo);
|
||||
|
||||
String localRepoTail = ConfigUtils.getString(session, null, MAVEN_REPO_LOCAL_TAIL);
|
||||
if (localRepoTail != null) {
|
||||
boolean ignoreTailAvailability =
|
||||
ConfigUtils.getBoolean(session, true, MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY);
|
||||
List<LocalRepositoryManager> tail = new ArrayList<>();
|
||||
List<String> paths = Arrays.stream(localRepoTail.split(","))
|
||||
.filter(p -> p != null && !p.trim().isEmpty())
|
||||
.collect(toList());
|
||||
for (String path : paths) {
|
||||
tail.add(repoSystem.newLocalRepositoryManager(session, new LocalRepository(path)));
|
||||
}
|
||||
session.setLocalRepositoryManager(new ChainedLocalRepositoryManager(lrm, tail, ignoreTailAvailability));
|
||||
} else {
|
||||
session.setLocalRepositoryManager(lrm);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<?, ?> getPropertiesFromRequestedProfiles(MavenExecutionRequest request) {
|
||||
|
||||
HashSet<String> activeProfileId =
|
||||
new HashSet<>(request.getProfileActivation().getRequiredActiveProfileIds());
|
||||
activeProfileId.addAll(request.getProfileActivation().getOptionalActiveProfileIds());
|
||||
|
@ -428,4 +445,95 @@ public class DefaultRepositorySystemSessionFactory {
|
|||
return "Apache-Maven" + version + " (Java " + System.getProperty("java.version") + "; "
|
||||
+ System.getProperty("os.name") + " " + System.getProperty("os.version") + ")";
|
||||
}
|
||||
|
||||
private void injectMirror(List<ArtifactRepository> repositories, List<Mirror> mirrors) {
|
||||
if (repositories != null && mirrors != null) {
|
||||
for (ArtifactRepository repository : repositories) {
|
||||
Mirror mirror = MavenRepositorySystem.getMirror(repository, mirrors);
|
||||
injectMirror(repository, mirror);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void injectMirror(ArtifactRepository repository, Mirror mirror) {
|
||||
if (mirror != null) {
|
||||
ArtifactRepository original = MavenRepositorySystem.createArtifactRepository(
|
||||
repository.getId(),
|
||||
repository.getUrl(),
|
||||
repository.getLayout(),
|
||||
repository.getSnapshots(),
|
||||
repository.getReleases());
|
||||
|
||||
repository.setMirroredRepositories(Collections.singletonList(original));
|
||||
|
||||
repository.setId(mirror.getId());
|
||||
repository.setUrl(mirror.getUrl());
|
||||
|
||||
if (mirror.getLayout() != null && !mirror.getLayout().isEmpty()) {
|
||||
repository.setLayout(original.getLayout());
|
||||
}
|
||||
|
||||
repository.setBlocked(mirror.isBlocked());
|
||||
}
|
||||
}
|
||||
|
||||
private void injectProxy(ProxySelector selector, List<ArtifactRepository> repositories) {
|
||||
if (repositories != null && selector != null) {
|
||||
for (ArtifactRepository repository : repositories) {
|
||||
repository.setProxy(getProxy(selector, repository));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private org.apache.maven.repository.Proxy getProxy(ProxySelector selector, ArtifactRepository repository) {
|
||||
if (selector != null) {
|
||||
RemoteRepository repo = RepositoryUtils.toRepo(repository);
|
||||
org.eclipse.aether.repository.Proxy proxy = selector.getProxy(repo);
|
||||
if (proxy != null) {
|
||||
org.apache.maven.repository.Proxy p = new org.apache.maven.repository.Proxy();
|
||||
p.setHost(proxy.getHost());
|
||||
p.setProtocol(proxy.getType());
|
||||
p.setPort(proxy.getPort());
|
||||
if (proxy.getAuthentication() != null) {
|
||||
repo = new RemoteRepository.Builder(repo).setProxy(proxy).build();
|
||||
AuthenticationContext authCtx = AuthenticationContext.forProxy(null, repo);
|
||||
p.setUserName(authCtx.get(AuthenticationContext.USERNAME));
|
||||
p.setPassword(authCtx.get(AuthenticationContext.PASSWORD));
|
||||
p.setNtlmDomain(authCtx.get(AuthenticationContext.NTLM_DOMAIN));
|
||||
p.setNtlmHost(authCtx.get(AuthenticationContext.NTLM_WORKSTATION));
|
||||
authCtx.close();
|
||||
}
|
||||
return p;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void injectAuthentication(AuthenticationSelector selector, List<ArtifactRepository> repositories) {
|
||||
if (repositories != null && selector != null) {
|
||||
for (ArtifactRepository repository : repositories) {
|
||||
repository.setAuthentication(getAuthentication(selector, repository));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Authentication getAuthentication(AuthenticationSelector selector, ArtifactRepository repository) {
|
||||
if (selector != null) {
|
||||
RemoteRepository repo = RepositoryUtils.toRepo(repository);
|
||||
org.eclipse.aether.repository.Authentication auth = selector.getAuthentication(repo);
|
||||
if (auth != null) {
|
||||
repo = new RemoteRepository.Builder(repo)
|
||||
.setAuthentication(auth)
|
||||
.build();
|
||||
AuthenticationContext authCtx = AuthenticationContext.forRepository(null, repo);
|
||||
Authentication result = new Authentication(
|
||||
authCtx.get(AuthenticationContext.USERNAME), authCtx.get(AuthenticationContext.PASSWORD));
|
||||
result.setPrivateKey(authCtx.get(AuthenticationContext.PRIVATE_KEY_PATH));
|
||||
result.setPassphrase(authCtx.get(AuthenticationContext.PRIVATE_KEY_PASSPHRASE));
|
||||
authCtx.close();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -213,8 +213,8 @@ public class DefaultSession extends AbstractSession {
|
|||
|
||||
RepositorySystemSession repoSession =
|
||||
new DefaultRepositorySystemSession(session).setLocalRepositoryManager(localRepositoryManager);
|
||||
MavenSession newSession = new MavenSession(
|
||||
mavenSession.getContainer(), repoSession, mavenSession.getRequest(), mavenSession.getResult());
|
||||
MavenSession newSession =
|
||||
new MavenSession(() -> repoSession, mavenSession.getRequest(), mavenSession.getResult());
|
||||
return new DefaultSession(
|
||||
newSession, repositorySystem, repositories, mavenRepositorySystem, container, runtimeInformation);
|
||||
}
|
||||
|
|
|
@ -54,7 +54,6 @@ import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
|
|||
*/
|
||||
@PlexusTest
|
||||
public class DefaultRepositorySystemSessionFactoryTest {
|
||||
|
||||
@Inject
|
||||
protected MavenRepositorySystem mavenRepositorySystem;
|
||||
|
||||
|
@ -81,7 +80,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
|
@ -104,7 +102,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
|
@ -139,7 +136,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
PlexusConfiguration plexusConfiguration = (PlexusConfiguration) systemSessionFactory
|
||||
|
@ -182,7 +178,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
Map<String, String> headers = (Map<String, String>) systemSessionFactory
|
||||
|
@ -219,7 +214,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int connectionTimeout = (Integer) systemSessionFactory
|
||||
|
@ -260,7 +254,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int connectionTimeout = (Integer) systemSessionFactory
|
||||
|
@ -295,7 +288,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int requestTimeout = (Integer) systemSessionFactory
|
||||
|
@ -336,7 +328,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int requestTimeout = (Integer) systemSessionFactory
|
||||
|
@ -354,7 +345,6 @@ public class DefaultRepositorySystemSessionFactoryTest {
|
|||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
|
|
|
@ -35,6 +35,7 @@ import org.apache.maven.api.services.SettingsBuilder;
|
|||
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
|
||||
import org.apache.maven.bridge.MavenRepositorySystem;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionResult;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.execution.scope.internal.MojoExecutionScope;
|
||||
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
|
||||
|
@ -96,7 +97,8 @@ class TestApi {
|
|||
void setup() {
|
||||
RepositorySystemSession rss = MavenRepositorySystemUtils.newSession();
|
||||
DefaultMavenExecutionRequest mer = new DefaultMavenExecutionRequest();
|
||||
MavenSession ms = new MavenSession(null, rss, mer, null);
|
||||
DefaultMavenExecutionResult meres = new DefaultMavenExecutionResult();
|
||||
MavenSession ms = new MavenSession(() -> rss, mer, meres);
|
||||
DefaultSession session = new DefaultSession(
|
||||
ms,
|
||||
repositorySystem,
|
||||
|
|
|
@ -117,6 +117,10 @@ public class CLIManager {
|
|||
|
||||
public static final String COLOR = "color";
|
||||
|
||||
public static final String CACHE_ARTIFACT_NOT_FOUND = "canf";
|
||||
|
||||
public static final String STRICT_ARTIFACT_DESCRIPTOR_POLICY = "sadp";
|
||||
|
||||
/** This option is deprecated and may be repurposed as Java debug in a future version.
|
||||
* Use {@code -X/--verbose} instead. */
|
||||
@Deprecated
|
||||
|
@ -308,6 +312,17 @@ public class CLIManager {
|
|||
.optionalArg(true)
|
||||
.desc("Defines the color mode of the output. Supported are 'auto', 'always', 'never'.")
|
||||
.build());
|
||||
options.addOption(Option.builder(CACHE_ARTIFACT_NOT_FOUND)
|
||||
.longOpt("cache-artifact-not-found")
|
||||
.hasArg()
|
||||
.desc(
|
||||
"Defines caching behaviour for 'not found' artifacts. Supported values are 'true' (default), 'false'.")
|
||||
.build());
|
||||
options.addOption(Option.builder(STRICT_ARTIFACT_DESCRIPTOR_POLICY)
|
||||
.longOpt("strict-artifact-descriptor-policy")
|
||||
.hasArg()
|
||||
.desc("Defines 'strict' artifact descriptor policy. Supported values are 'true', 'false' (default).")
|
||||
.build());
|
||||
|
||||
// Adding this back to make Maven fail if used
|
||||
options.addOption(Option.builder("llr")
|
||||
|
|
|
@ -1291,8 +1291,19 @@ public class MavenCli {
|
|||
request.setResumeFrom(commandLine.getOptionValue(CLIManager.RESUME_FROM));
|
||||
enableOnPresentOption(commandLine, CLIManager.RESUME, request::setResume);
|
||||
request.setMakeBehavior(determineMakeBehavior(commandLine));
|
||||
request.setCacheNotFound(true);
|
||||
boolean cacheNotFound = !commandLine.hasOption(CLIManager.CACHE_ARTIFACT_NOT_FOUND)
|
||||
|| Boolean.parseBoolean(commandLine.getOptionValue(CLIManager.CACHE_ARTIFACT_NOT_FOUND));
|
||||
request.setCacheNotFound(cacheNotFound);
|
||||
request.setCacheTransferError(false);
|
||||
boolean strictArtifactDescriptorPolicy = commandLine.hasOption(CLIManager.STRICT_ARTIFACT_DESCRIPTOR_POLICY)
|
||||
&& Boolean.parseBoolean(commandLine.getOptionValue(CLIManager.STRICT_ARTIFACT_DESCRIPTOR_POLICY));
|
||||
if (strictArtifactDescriptorPolicy) {
|
||||
request.setIgnoreMissingArtifactDescriptor(false);
|
||||
request.setIgnoreInvalidArtifactDescriptor(false);
|
||||
} else {
|
||||
request.setIgnoreMissingArtifactDescriptor(true);
|
||||
request.setIgnoreInvalidArtifactDescriptor(true);
|
||||
}
|
||||
|
||||
performProjectActivation(commandLine, request.getProjectActivation());
|
||||
performProfileActivation(commandLine, request.getProfileActivation());
|
||||
|
|
|
@ -45,6 +45,7 @@ import org.codehaus.plexus.interpolation.Interpolator;
|
|||
import org.codehaus.plexus.interpolation.MapBasedValueSource;
|
||||
import org.codehaus.plexus.interpolation.StringSearchInterpolator;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.RepositorySystemSession.CloseableSession;
|
||||
import org.eclipse.aether.artifact.Artifact;
|
||||
import org.eclipse.aether.graph.DependencyFilter;
|
||||
import org.eclipse.aether.graph.DependencyNode;
|
||||
|
@ -91,11 +92,14 @@ public class BootstrapCoreExtensionManager {
|
|||
public List<CoreExtensionEntry> loadCoreExtensions(
|
||||
MavenExecutionRequest request, Set<String> providedArtifacts, List<CoreExtension> extensions)
|
||||
throws Exception {
|
||||
RepositorySystemSession repoSession = repositorySystemSessionFactory.newRepositorySession(request);
|
||||
List<RemoteRepository> repositories = RepositoryUtils.toRepos(request.getPluginArtifactRepositories());
|
||||
Interpolator interpolator = createInterpolator(request);
|
||||
try (CloseableSession repoSession = repositorySystemSessionFactory
|
||||
.newRepositorySessionBuilder(request)
|
||||
.build()) {
|
||||
List<RemoteRepository> repositories = RepositoryUtils.toRepos(request.getPluginArtifactRepositories());
|
||||
Interpolator interpolator = createInterpolator(request);
|
||||
|
||||
return resolveCoreExtensions(repoSession, repositories, providedArtifacts, extensions, interpolator);
|
||||
return resolveCoreExtensions(repoSession, repositories, providedArtifacts, extensions, interpolator);
|
||||
}
|
||||
}
|
||||
|
||||
private List<CoreExtensionEntry> resolveCoreExtensions(
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
package org.apache.maven.repository.internal;
|
||||
|
||||
import org.eclipse.aether.DefaultRepositorySystemSession;
|
||||
import org.eclipse.aether.RepositorySystemSession.SessionBuilder;
|
||||
import org.eclipse.aether.artifact.DefaultArtifactType;
|
||||
import org.eclipse.aether.collection.DependencyGraphTransformer;
|
||||
import org.eclipse.aether.collection.DependencyManager;
|
||||
|
@ -100,4 +101,51 @@ public final class MavenRepositorySystemUtils {
|
|||
|
||||
return session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new Maven-like repository system session by initializing the session with values typical for
|
||||
* Maven-based resolution. In more detail, this method configures settings relevant for the processing of dependency
|
||||
* graphs, most other settings remain at their generic default value. Use the various setters to further configure
|
||||
* the session with authentication, mirror, proxy and other information required for your environment.
|
||||
*
|
||||
* @return The new repository system session, never {@code null}.
|
||||
*/
|
||||
public static SessionBuilder newSession(SessionBuilder session) {
|
||||
DependencyTraverser depTraverser = new FatArtifactTraverser();
|
||||
session.setDependencyTraverser(depTraverser);
|
||||
|
||||
DependencyManager depManager = new ClassicDependencyManager();
|
||||
session.setDependencyManager(depManager);
|
||||
|
||||
DependencySelector depFilter = new AndDependencySelector(
|
||||
new ScopeDependencySelector("test", "provided"),
|
||||
new OptionalDependencySelector(),
|
||||
new ExclusionDependencySelector());
|
||||
session.setDependencySelector(depFilter);
|
||||
|
||||
DependencyGraphTransformer transformer = new ConflictResolver(
|
||||
new NearestVersionSelector(), new JavaScopeSelector(),
|
||||
new SimpleOptionalitySelector(), new JavaScopeDeriver());
|
||||
transformer = new ChainedDependencyGraphTransformer(transformer, new JavaDependencyContextRefiner());
|
||||
session.setDependencyGraphTransformer(transformer);
|
||||
|
||||
DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry();
|
||||
stereotypes.add(new DefaultArtifactType("pom"));
|
||||
stereotypes.add(new DefaultArtifactType("maven-plugin", "jar", "", "java"));
|
||||
stereotypes.add(new DefaultArtifactType("jar", "jar", "", "java"));
|
||||
stereotypes.add(new DefaultArtifactType("ejb", "jar", "", "java"));
|
||||
stereotypes.add(new DefaultArtifactType("ejb-client", "jar", "client", "java"));
|
||||
stereotypes.add(new DefaultArtifactType("test-jar", "jar", "tests", "java"));
|
||||
stereotypes.add(new DefaultArtifactType("javadoc", "jar", "javadoc", "java"));
|
||||
stereotypes.add(new DefaultArtifactType("java-source", "jar", "sources", "java", false, false));
|
||||
stereotypes.add(new DefaultArtifactType("war", "war", "", "java", false, true));
|
||||
stereotypes.add(new DefaultArtifactType("ear", "ear", "", "java", false, true));
|
||||
stereotypes.add(new DefaultArtifactType("rar", "rar", "", "java", false, true));
|
||||
stereotypes.add(new DefaultArtifactType("par", "par", "", "java", false, true));
|
||||
session.setArtifactTypeRegistry(stereotypes);
|
||||
|
||||
session.setArtifactDescriptorPolicy(new SimpleArtifactDescriptorPolicy(true, true));
|
||||
|
||||
return session;
|
||||
}
|
||||
}
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -175,7 +175,7 @@ under the License.
|
|||
<plexusInterpolationVersion>1.26</plexusInterpolationVersion>
|
||||
<plexusTestingVersion>1.0.0</plexusTestingVersion>
|
||||
<plexusXmlVersion>4.0.1</plexusXmlVersion>
|
||||
<resolverVersion>2.0.0-alpha-1</resolverVersion>
|
||||
<resolverVersion>2.0.0-alpha-2</resolverVersion>
|
||||
<securityDispatcherVersion>2.0</securityDispatcherVersion>
|
||||
<sisuVersion>0.9.0.M2</sisuVersion>
|
||||
<slf4jVersion>1.7.36</slf4jVersion>
|
||||
|
|
Loading…
Reference in New Issue