mirror of https://github.com/apache/maven.git
Fix consumer pom builder (#1491)
This commit is contained in:
parent
399f8b4ffc
commit
64e9447926
|
@ -37,6 +37,10 @@ import org.apache.maven.api.settings.Settings;
|
|||
/**
|
||||
* The session to install / deploy / resolve artifacts and dependencies.
|
||||
*
|
||||
* TODO: move the remote repositories in the requests (plugins will need to access this list somehow)
|
||||
* TODO: add request trace so that requests can be linked together and through the resolver
|
||||
* TODO: add a Request interface holding session + parent request
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
@Experimental
|
||||
|
|
|
@ -27,6 +27,11 @@ import org.apache.maven.api.annotations.Experimental;
|
|||
*/
|
||||
@Experimental
|
||||
public class LookupException extends MavenException {
|
||||
|
||||
public LookupException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message the message to give
|
||||
* @param e the {@link Exception}
|
||||
|
|
|
@ -37,7 +37,8 @@ import static org.apache.maven.api.services.BaseRequest.nonNull;
|
|||
* Request used to build a {@link org.apache.maven.api.Project} using
|
||||
* the {@link ProjectBuilder} service.
|
||||
*
|
||||
* TODO: add validationLevel, activeProfileIds, inactiveProfileIds, resolveDependencies
|
||||
* TODO: replace ModelRepositoryHolder with just the enum for the strategy
|
||||
* TODO: replace validation level with an enum (though, we usually need just a boolean)
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
|
@ -138,8 +139,15 @@ public interface ModelBuilderRequest {
|
|||
@Nonnull
|
||||
Map<String, String> getUserProperties();
|
||||
|
||||
@Nonnull
|
||||
ModelResolver getModelResolver();
|
||||
|
||||
@Nonnull
|
||||
ModelRepositoryHolder getModelRepositoryHolder();
|
||||
|
||||
@Nullable
|
||||
ModelCache getModelCache();
|
||||
|
||||
@Nullable
|
||||
Object getListener();
|
||||
|
||||
|
@ -197,6 +205,8 @@ public interface ModelBuilderRequest {
|
|||
Map<String, String> systemProperties;
|
||||
Map<String, String> userProperties;
|
||||
ModelResolver modelResolver;
|
||||
ModelRepositoryHolder modelRepositoryHolder;
|
||||
ModelCache modelCache;
|
||||
Object listener;
|
||||
ModelBuilderResult interimResult;
|
||||
ModelTransformerContextBuilder transformerContextBuilder;
|
||||
|
@ -217,6 +227,8 @@ public interface ModelBuilderRequest {
|
|||
this.systemProperties = request.getSystemProperties();
|
||||
this.userProperties = request.getUserProperties();
|
||||
this.modelResolver = request.getModelResolver();
|
||||
this.modelRepositoryHolder = request.getModelRepositoryHolder();
|
||||
this.modelCache = request.getModelCache();
|
||||
this.listener = request.getListener();
|
||||
this.interimResult = request.getInterimResult();
|
||||
this.transformerContextBuilder = request.getTransformerContextBuilder();
|
||||
|
@ -287,6 +299,16 @@ public interface ModelBuilderRequest {
|
|||
return this;
|
||||
}
|
||||
|
||||
public ModelBuilderRequestBuilder modelRepositoryHolder(ModelRepositoryHolder modelRepositoryHolder) {
|
||||
this.modelRepositoryHolder = modelRepositoryHolder;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModelBuilderRequestBuilder modelCache(ModelCache modelCache) {
|
||||
this.modelCache = modelCache;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModelBuilderRequestBuilder listener(Object listener) {
|
||||
this.listener = listener;
|
||||
return this;
|
||||
|
@ -318,6 +340,8 @@ public interface ModelBuilderRequest {
|
|||
systemProperties,
|
||||
userProperties,
|
||||
modelResolver,
|
||||
modelRepositoryHolder,
|
||||
modelCache,
|
||||
listener,
|
||||
interimResult,
|
||||
transformerContextBuilder);
|
||||
|
@ -336,6 +360,8 @@ public interface ModelBuilderRequest {
|
|||
private final Map<String, String> systemProperties;
|
||||
private final Map<String, String> userProperties;
|
||||
private final ModelResolver modelResolver;
|
||||
private final ModelRepositoryHolder modelRepositoryHolder;
|
||||
private final ModelCache modelCache;
|
||||
private final Object listener;
|
||||
private final ModelBuilderResult interimResult;
|
||||
private final ModelTransformerContextBuilder transformerContextBuilder;
|
||||
|
@ -355,6 +381,8 @@ public interface ModelBuilderRequest {
|
|||
Map<String, String> systemProperties,
|
||||
Map<String, String> userProperties,
|
||||
ModelResolver modelResolver,
|
||||
ModelRepositoryHolder modelRepositoryHolder,
|
||||
ModelCache modelCache,
|
||||
Object listener,
|
||||
ModelBuilderResult interimResult,
|
||||
ModelTransformerContextBuilder transformerContextBuilder) {
|
||||
|
@ -372,6 +400,8 @@ public interface ModelBuilderRequest {
|
|||
systemProperties != null ? Map.copyOf(systemProperties) : session.getSystemProperties();
|
||||
this.userProperties = userProperties != null ? Map.copyOf(userProperties) : session.getUserProperties();
|
||||
this.modelResolver = modelResolver;
|
||||
this.modelRepositoryHolder = modelRepositoryHolder;
|
||||
this.modelCache = modelCache;
|
||||
this.listener = listener;
|
||||
this.interimResult = interimResult;
|
||||
this.transformerContextBuilder = transformerContextBuilder;
|
||||
|
@ -437,6 +467,16 @@ public interface ModelBuilderRequest {
|
|||
return modelResolver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelRepositoryHolder getModelRepositoryHolder() {
|
||||
return modelRepositoryHolder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelCache getModelCache() {
|
||||
return modelCache;
|
||||
}
|
||||
|
||||
public Object getListener() {
|
||||
return listener;
|
||||
}
|
||||
|
|
|
@ -16,12 +16,10 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven.api.services.model;
|
||||
package org.apache.maven.api.services;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.apache.maven.api.services.Source;
|
||||
|
||||
/**
|
||||
* Caches auxiliary data used during model building like already processed raw/effective models. The data in the cache
|
||||
* is meant for exclusive consumption by the model builder and is opaque to the cache implementation. The cache key is
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven.api.services;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.api.RemoteRepository;
|
||||
import org.apache.maven.api.model.Repository;
|
||||
|
||||
public interface ModelRepositoryHolder {
|
||||
|
||||
void merge(List<Repository> repos, boolean replace);
|
||||
|
||||
List<RemoteRepository> getRepositories();
|
||||
|
||||
ModelRepositoryHolder copy();
|
||||
}
|
|
@ -19,107 +19,67 @@
|
|||
package org.apache.maven.api.services;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.apache.maven.api.Service;
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.annotations.Nonnull;
|
||||
import org.apache.maven.api.model.Dependency;
|
||||
import org.apache.maven.api.model.Parent;
|
||||
import org.apache.maven.api.model.Repository;
|
||||
|
||||
/**
|
||||
* Resolves a POM from its coordinates. During the build process, the
|
||||
* {@link org.apache.maven.api.services.ModelBuilder} will add any relevant repositories to the model resolver. In
|
||||
* other words, the model resolver is stateful and should not be reused across multiple model building requests.
|
||||
*
|
||||
* Resolves a POM from its coordinates.
|
||||
*/
|
||||
public interface ModelResolver extends Service {
|
||||
|
||||
/**
|
||||
* Tries to resolve the POM for the specified coordinates.
|
||||
*
|
||||
* @param groupId The group identifier of the POM, must not be {@code null}.
|
||||
* @param artifactId The artifact identifier of the POM, must not be {@code null}.
|
||||
* @param version The version of the POM, must not be {@code null}.
|
||||
* @return The source of the requested POM, never {@code null}.
|
||||
* @throws ModelResolverException If the POM could not be resolved from any configured repository.
|
||||
*/
|
||||
@Nonnull
|
||||
ModelSource resolveModel(
|
||||
@Nonnull Session session, @Nonnull String groupId, @Nonnull String artifactId, @Nonnull String version)
|
||||
throws ModelResolverException;
|
||||
|
||||
/**
|
||||
* Tries to resolve the POM for the specified parent coordinates possibly updating {@code parent}.
|
||||
* <p>
|
||||
* Unlike the {@link #resolveModel(Session, String, String, String)} method, this method
|
||||
* supports version ranges and updates the given {@code parent} instance to match the returned {@code ModelSource}.
|
||||
* If {@code parent} declares a version range, the version corresponding to the returned {@code ModelSource} will
|
||||
* be set on the given {@code parent}.
|
||||
* </p>
|
||||
*
|
||||
* @param session The session to use to resolve the model, must not be {@code null}.
|
||||
* @param parent The parent coordinates to resolve, must not be {@code null}.
|
||||
*
|
||||
* @param modified a holder for the updated parent, must not be {@code null}.
|
||||
* @return The source of the requested POM, never {@code null}.
|
||||
*
|
||||
* @throws ModelResolverException If the POM could not be resolved from any configured repository.
|
||||
*/
|
||||
@Nonnull
|
||||
ModelSource resolveModel(
|
||||
default ModelSource resolveModel(
|
||||
@Nonnull Session session, @Nonnull Parent parent, @Nonnull AtomicReference<Parent> modified)
|
||||
throws ModelResolverException;
|
||||
throws ModelResolverException {
|
||||
return resolveModel(
|
||||
session,
|
||||
parent.getGroupId(),
|
||||
parent.getArtifactId(),
|
||||
parent.getVersion(),
|
||||
version -> modified.set(parent.withVersion(version)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to resolve the POM for the specified dependency coordinates possibly updating {@code dependency}.
|
||||
* <p>
|
||||
* Unlike the {@link #resolveModel(Session, String, String, String)} method, this method
|
||||
* supports version ranges and updates the given {@code dependency} instance to match the returned
|
||||
* {@code ModelSource}. If {@code dependency} declares a version range, the version corresponding to the returned
|
||||
* {@code ModelSource} will be set on the given {@code dependency}.
|
||||
* </p>
|
||||
*
|
||||
* @param session The session to use to resolve the model, must not be {@code null}.
|
||||
* @param dependency The dependency coordinates to resolve, must not be {@code null}.
|
||||
*
|
||||
* @param modified a holder for the updated dependency, must not be {@code null}.
|
||||
* @return The source of the requested POM, never {@code null}.
|
||||
*
|
||||
* @throws ModelResolverException If the POM could not be resolved from any configured repository.
|
||||
*
|
||||
* @see Dependency#clone()
|
||||
*/
|
||||
@Nonnull
|
||||
ModelSource resolveModel(
|
||||
default ModelSource resolveModel(
|
||||
@Nonnull Session session, @Nonnull Dependency dependency, @Nonnull AtomicReference<Dependency> modified)
|
||||
throws ModelResolverException {
|
||||
return resolveModel(
|
||||
session,
|
||||
dependency.getGroupId(),
|
||||
dependency.getArtifactId(),
|
||||
dependency.getVersion(),
|
||||
version -> modified.set(dependency.withVersion(version)));
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
ModelSource resolveModel(
|
||||
@Nonnull Session session,
|
||||
@Nonnull String groupId,
|
||||
@Nonnull String artifactId,
|
||||
@Nonnull String version,
|
||||
@Nonnull Consumer<String> resolvedVersion)
|
||||
throws ModelResolverException;
|
||||
|
||||
/**
|
||||
* Adds a repository to use for subsequent resolution requests. The order in which repositories are added matters,
|
||||
* repositories that were added first should also be searched first. When multiple repositories with the same
|
||||
* identifier are added, only the first repository being added will be used.
|
||||
*
|
||||
* @param repository The repository to add to the internal search chain, must not be {@code null}.
|
||||
* @throws ModelResolverException If the repository could not be added (e.g. due to invalid URL or layout).
|
||||
*/
|
||||
void addRepository(@Nonnull Session session, Repository repository) throws ModelResolverException;
|
||||
|
||||
/**
|
||||
* Adds a repository to use for subsequent resolution requests. The order in which repositories are added matters,
|
||||
* repositories that were added first should also be searched first. When multiple repositories with the same
|
||||
* identifier are added, then the value of the replace argument determines the behaviour.
|
||||
*
|
||||
* If replace is false then any existing repository with the same Id will remain in use. If replace
|
||||
* is true the new repository replaces the original.
|
||||
*
|
||||
* @param repository The repository to add to the internal search chain, must not be {@code null}.
|
||||
* @throws ModelResolverException If the repository could not be added (e.g. due to invalid URL or layout).
|
||||
*/
|
||||
void addRepository(@Nonnull Session session, Repository repository, boolean replace) throws ModelResolverException;
|
||||
|
||||
/**
|
||||
* Clones this resolver for usage in a forked resolution process. In general, implementors need not provide a deep
|
||||
* clone. The only requirement is that invocations of {@link #addRepository(Session, Repository)} on the clone do not affect
|
||||
* the state of the original resolver and vice versa.
|
||||
*
|
||||
* @return The cloned resolver, never {@code null}.
|
||||
*/
|
||||
ModelResolver newCopy();
|
||||
}
|
||||
|
|
|
@ -79,4 +79,9 @@ class PathSource implements ModelSource {
|
|||
public int hashCode() {
|
||||
return Objects.hash(path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PathSource[" + "location='" + location + '\'' + ", " + "path=" + path + ']';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,10 +19,12 @@
|
|||
package org.apache.maven.api.services;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.api.LocalRepository;
|
||||
import org.apache.maven.api.RemoteRepository;
|
||||
import org.apache.maven.api.Service;
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.annotations.Experimental;
|
||||
import org.apache.maven.api.annotations.Nonnull;
|
||||
import org.apache.maven.api.model.Repository;
|
||||
|
@ -43,4 +45,11 @@ public interface RepositoryFactory extends Service {
|
|||
|
||||
@Nonnull
|
||||
RemoteRepository createRemote(@Nonnull Repository repository);
|
||||
|
||||
@Nonnull
|
||||
List<RemoteRepository> aggregate(
|
||||
@Nonnull Session session,
|
||||
@Nonnull List<RemoteRepository> dominant,
|
||||
@Nonnull List<RemoteRepository> recessive,
|
||||
boolean processRecessive);
|
||||
}
|
||||
|
|
|
@ -118,6 +118,11 @@ under the License.
|
|||
<artifactId>mockito-junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hamcrest</groupId>
|
||||
<artifactId>hamcrest</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-di</artifactId>
|
||||
|
|
|
@ -76,7 +76,7 @@ public class DefaultArtifactResolver implements ArtifactResolver {
|
|||
}
|
||||
return () -> paths;
|
||||
} catch (ArtifactResolutionException e) {
|
||||
throw new ArtifactResolverException("Unable to resolve artifact", e);
|
||||
throw new ArtifactResolverException("Unable to resolve artifact: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ class DefaultBuilderProblem implements BuilderProblem {
|
|||
@Override
|
||||
public String getLocation() {
|
||||
StringBuilder buffer = new StringBuilder(256);
|
||||
if (!getSource().isEmpty()) {
|
||||
if (getSource() != null && !getSource().isEmpty()) {
|
||||
buffer.append(getSource());
|
||||
}
|
||||
if (getLineNumber() > 0) {
|
||||
|
|
|
@ -19,19 +19,32 @@
|
|||
package org.apache.maven.internal.impl;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.api.LocalRepository;
|
||||
import org.apache.maven.api.RemoteRepository;
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.di.Inject;
|
||||
import org.apache.maven.api.di.Named;
|
||||
import org.apache.maven.api.di.Singleton;
|
||||
import org.apache.maven.api.model.Repository;
|
||||
import org.apache.maven.api.services.RepositoryFactory;
|
||||
import org.eclipse.aether.impl.RemoteRepositoryManager;
|
||||
import org.eclipse.aether.repository.RepositoryPolicy;
|
||||
|
||||
import static org.apache.maven.internal.impl.Utils.nonNull;
|
||||
|
||||
@Named
|
||||
@Singleton
|
||||
public class DefaultRepositoryFactory implements RepositoryFactory {
|
||||
|
||||
final RemoteRepositoryManager remoteRepositoryManager;
|
||||
|
||||
@Inject
|
||||
public DefaultRepositoryFactory(RemoteRepositoryManager remoteRepositoryManager) {
|
||||
this.remoteRepositoryManager = remoteRepositoryManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalRepository createLocal(Path path) {
|
||||
return new DefaultLocalRepository(new org.eclipse.aether.repository.LocalRepository(path.toFile()));
|
||||
|
@ -52,6 +65,23 @@ public class DefaultRepositoryFactory implements RepositoryFactory {
|
|||
.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RemoteRepository> aggregate(
|
||||
Session session,
|
||||
List<RemoteRepository> dominant,
|
||||
List<RemoteRepository> recessive,
|
||||
boolean processRecessive) {
|
||||
InternalSession internalSession = InternalSession.from(nonNull(session, "session"));
|
||||
List<org.eclipse.aether.repository.RemoteRepository> repos = remoteRepositoryManager.aggregateRepositories(
|
||||
internalSession.getSession(),
|
||||
internalSession.toRepositories(nonNull(dominant, "dominant")),
|
||||
internalSession.toRepositories(nonNull(recessive, "recessive")),
|
||||
processRecessive);
|
||||
return repos.stream()
|
||||
.<RemoteRepository>map(DefaultRemoteRepository::new)
|
||||
.toList();
|
||||
}
|
||||
|
||||
public static org.eclipse.aether.repository.RepositoryPolicy buildRepositoryPolicy(
|
||||
org.apache.maven.api.model.RepositoryPolicy policy) {
|
||||
boolean enabled = true;
|
||||
|
|
|
@ -39,6 +39,7 @@ import java.util.function.UnaryOperator;
|
|||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.VersionRange;
|
||||
import org.apache.maven.api.annotations.Nullable;
|
||||
import org.apache.maven.api.di.Inject;
|
||||
|
@ -64,6 +65,7 @@ import org.apache.maven.api.services.ModelBuilder;
|
|||
import org.apache.maven.api.services.ModelBuilderException;
|
||||
import org.apache.maven.api.services.ModelBuilderRequest;
|
||||
import org.apache.maven.api.services.ModelBuilderResult;
|
||||
import org.apache.maven.api.services.ModelCache;
|
||||
import org.apache.maven.api.services.ModelProblem;
|
||||
import org.apache.maven.api.services.ModelProblemCollector;
|
||||
import org.apache.maven.api.services.ModelResolver;
|
||||
|
@ -77,11 +79,10 @@ import org.apache.maven.api.services.Source;
|
|||
import org.apache.maven.api.services.SuperPomProvider;
|
||||
import org.apache.maven.api.services.VersionParserException;
|
||||
import org.apache.maven.api.services.model.*;
|
||||
import org.apache.maven.api.services.model.ModelCache;
|
||||
import org.apache.maven.api.services.xml.XmlReaderException;
|
||||
import org.apache.maven.api.services.xml.XmlReaderRequest;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelCache;
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelRepositoryHolder;
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelResolver;
|
||||
import org.apache.maven.model.v4.MavenTransformer;
|
||||
import org.codehaus.plexus.interpolation.InterpolationException;
|
||||
|
@ -89,7 +90,8 @@ import org.codehaus.plexus.interpolation.Interpolator;
|
|||
import org.codehaus.plexus.interpolation.MapBasedValueSource;
|
||||
import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
|
||||
import org.codehaus.plexus.interpolation.StringSearchInterpolator;
|
||||
import org.eclipse.aether.impl.RemoteRepositoryManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
*/
|
||||
|
@ -101,6 +103,8 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
private static final String FILE = "file";
|
||||
private static final String IMPORT = "import";
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final ModelProcessor modelProcessor;
|
||||
private final ModelValidator modelValidator;
|
||||
private final ModelNormalizer modelNormalizer;
|
||||
|
@ -119,7 +123,6 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
private final ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator;
|
||||
private final ModelTransformer transformer;
|
||||
private final ModelVersionParser versionParser;
|
||||
private final RemoteRepositoryManager remoteRepositoryManager;
|
||||
|
||||
@SuppressWarnings("checkstyle:ParameterNumber")
|
||||
@Inject
|
||||
|
@ -141,8 +144,7 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
PluginConfigurationExpander pluginConfigurationExpander,
|
||||
ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator,
|
||||
ModelTransformer transformer,
|
||||
ModelVersionParser versionParser,
|
||||
RemoteRepositoryManager remoteRepositoryManager) {
|
||||
ModelVersionParser versionParser) {
|
||||
this.modelProcessor = modelProcessor;
|
||||
this.modelValidator = modelValidator;
|
||||
this.modelNormalizer = modelNormalizer;
|
||||
|
@ -161,7 +163,6 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
this.profileActivationFilePathInterpolator = profileActivationFilePathInterpolator;
|
||||
this.transformer = transformer;
|
||||
this.versionParser = versionParser;
|
||||
this.remoteRepositoryManager = remoteRepositoryManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -171,6 +172,7 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
|
||||
@Override
|
||||
public ModelBuilderResult build(ModelBuilderRequest request) throws ModelBuilderException {
|
||||
request = fillRequestDefaults(request);
|
||||
if (request.getInterimResult() != null) {
|
||||
return build(request, request.getInterimResult(), new LinkedHashSet<>());
|
||||
} else {
|
||||
|
@ -178,6 +180,23 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
private static ModelBuilderRequest fillRequestDefaults(ModelBuilderRequest request) {
|
||||
ModelBuilderRequest.ModelBuilderRequestBuilder builder = ModelBuilderRequest.builder(request);
|
||||
if (request.getModelCache() == null) {
|
||||
builder.modelCache(new DefaultModelCache());
|
||||
}
|
||||
if (request.getModelRepositoryHolder() == null) {
|
||||
builder.modelRepositoryHolder(new DefaultModelRepositoryHolder(
|
||||
request.getSession(),
|
||||
DefaultModelRepositoryHolder.RepositoryMerging.POM_DOMINANT,
|
||||
request.getSession().getRemoteRepositories()));
|
||||
}
|
||||
if (request.getModelResolver() == null) {
|
||||
builder.modelResolver(new DefaultModelResolver());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
protected ModelBuilderResult build(ModelBuilderRequest request, Collection<String> importIds)
|
||||
throws ModelBuilderException {
|
||||
// phase 1
|
||||
|
@ -322,7 +341,19 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
}
|
||||
|
||||
// add repositories specified by the current model so that we can resolve the parent
|
||||
configureResolver(getModelResolver(request), model, request, problems, false);
|
||||
if (!model.getRepositories().isEmpty()) {
|
||||
List<String> oldRepos = request.getModelRepositoryHolder().getRepositories().stream()
|
||||
.map(Object::toString)
|
||||
.toList();
|
||||
request.getModelRepositoryHolder().merge(model.getRepositories(), false);
|
||||
List<String> newRepos = request.getModelRepositoryHolder().getRepositories().stream()
|
||||
.map(Object::toString)
|
||||
.toList();
|
||||
if (!Objects.equals(oldRepos, newRepos)) {
|
||||
logger.debug("Merging repositories from " + model.getId() + "\n"
|
||||
+ newRepos.stream().map(s -> " " + s).collect(Collectors.joining("\n")));
|
||||
}
|
||||
}
|
||||
|
||||
// we pass a cloned model, so that resolving the parent version does not affect the returned model
|
||||
ModelData parentData = readParent(model, currentData.source(), request, problems);
|
||||
|
@ -376,7 +407,19 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
result.setEffectiveModel(resultModel);
|
||||
|
||||
// Now the fully interpolated model is available: reconfigure the resolver
|
||||
configureResolver(getModelResolver(request), resultModel, request, problems, true);
|
||||
if (!resultModel.getRepositories().isEmpty()) {
|
||||
List<String> oldRepos = request.getModelRepositoryHolder().getRepositories().stream()
|
||||
.map(Object::toString)
|
||||
.toList();
|
||||
request.getModelRepositoryHolder().merge(resultModel.getRepositories(), true);
|
||||
List<String> newRepos = request.getModelRepositoryHolder().getRepositories().stream()
|
||||
.map(Object::toString)
|
||||
.toList();
|
||||
if (!Objects.equals(oldRepos, newRepos)) {
|
||||
logger.debug("Replacing repositories from " + resultModel.getId() + "\n"
|
||||
+ newRepos.stream().map(s -> " " + s).collect(Collectors.joining("\n")));
|
||||
}
|
||||
}
|
||||
|
||||
return resultModel;
|
||||
}
|
||||
|
@ -472,7 +515,8 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
return build(request, result, new LinkedHashSet<>());
|
||||
}
|
||||
|
||||
public Model buildRawModel(final ModelBuilderRequest request) throws ModelBuilderException {
|
||||
public Model buildRawModel(ModelBuilderRequest request) throws ModelBuilderException {
|
||||
request = fillRequestDefaults(request);
|
||||
DefaultModelProblemCollector problems = new DefaultModelProblemCollector(new DefaultModelBuilderResult());
|
||||
Model model = readRawModel(request, problems);
|
||||
if (hasModelErrors(problems)) {
|
||||
|
@ -484,15 +528,6 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
private ModelBuilderResult build(
|
||||
ModelBuilderRequest request, final ModelBuilderResult phaseOneResult, Collection<String> importIds)
|
||||
throws ModelBuilderException {
|
||||
if (request.getModelResolver() == null) {
|
||||
ModelResolver resolver = new DefaultModelResolver(
|
||||
remoteRepositoryManager,
|
||||
InternalSession.from(request.getSession())
|
||||
.toRepositories(request.getSession().getRemoteRepositories()));
|
||||
request =
|
||||
ModelBuilderRequest.builder(request).modelResolver(resolver).build();
|
||||
}
|
||||
|
||||
DefaultModelBuilderResult result = asDefaultModelBuilderResult(phaseOneResult);
|
||||
|
||||
DefaultModelProblemCollector problems = new DefaultModelProblemCollector(result);
|
||||
|
@ -756,15 +791,6 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
return context;
|
||||
}
|
||||
|
||||
private void configureResolver(
|
||||
ModelResolver modelResolver,
|
||||
Model model,
|
||||
ModelBuilderRequest request,
|
||||
DefaultModelProblemCollector problems,
|
||||
boolean replaceRepositories) {
|
||||
model.getRepositories().forEach(r -> modelResolver.addRepository(request.getSession(), r, replaceRepositories));
|
||||
}
|
||||
|
||||
private void checkPluginVersions(List<Model> lineage, ModelBuilderRequest request, ModelProblemCollector problems) {
|
||||
if (request.getValidationLevel() < ModelBuilderRequest.VALIDATION_LEVEL_MAVEN_2_0) {
|
||||
return;
|
||||
|
@ -875,7 +901,9 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
|
||||
Parent parent = childModel.getParent();
|
||||
if (parent != null) {
|
||||
parentData = readParentLocally(childModel, childSource, request, problems);
|
||||
if (request.isProjectBuild()) {
|
||||
parentData = readParentLocally(childModel, childSource, request, problems);
|
||||
}
|
||||
if (parentData == null) {
|
||||
parentData = readParentExternally(childModel, request, problems);
|
||||
}
|
||||
|
@ -1043,7 +1071,9 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
ModelSource modelSource;
|
||||
try {
|
||||
AtomicReference<Parent> modified = new AtomicReference<>();
|
||||
modelSource = modelResolver.resolveModel(request.getSession(), parent, modified);
|
||||
Session session = request.getSession()
|
||||
.withRemoteRepositories(request.getModelRepositoryHolder().getRepositories());
|
||||
modelSource = modelResolver.resolveModel(session, parent, modified);
|
||||
if (modified.get() != null) {
|
||||
parent = modified.get();
|
||||
}
|
||||
|
@ -1209,7 +1239,7 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
return null;
|
||||
}
|
||||
|
||||
DependencyManagement importMgmt = cache(
|
||||
Model importModel = cache(
|
||||
getModelCache(request),
|
||||
groupId,
|
||||
artifactId,
|
||||
|
@ -1217,6 +1247,10 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
IMPORT,
|
||||
() -> doLoadDependencyManagement(
|
||||
model, request, problems, dependency, groupId, artifactId, version, importIds));
|
||||
DependencyManagement importMgmt = importModel.getDependencyManagement();
|
||||
if (importMgmt == null) {
|
||||
importMgmt = DependencyManagement.newInstance();
|
||||
}
|
||||
|
||||
// [MNG-5600] Dependency management import should support exclusions.
|
||||
List<Exclusion> exclusions = dependency.getExclusions();
|
||||
|
@ -1242,7 +1276,7 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
}
|
||||
|
||||
@SuppressWarnings("checkstyle:parameternumber")
|
||||
private DependencyManagement doLoadDependencyManagement(
|
||||
private Model doLoadDependencyManagement(
|
||||
Model model,
|
||||
ModelBuilderRequest request,
|
||||
DefaultModelProblemCollector problems,
|
||||
|
@ -1251,7 +1285,6 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
String artifactId,
|
||||
String version,
|
||||
Collection<String> importIds) {
|
||||
DependencyManagement importMgmt;
|
||||
final WorkspaceModelResolver workspaceResolver = getWorkspaceModelResolver(request);
|
||||
final ModelResolver modelResolver = getModelResolver(request);
|
||||
if (workspaceResolver == null && modelResolver == null) {
|
||||
|
@ -1274,7 +1307,10 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
if (importModel == null) {
|
||||
final ModelSource importSource;
|
||||
try {
|
||||
importSource = modelResolver.resolveModel(request.getSession(), dependency, new AtomicReference<>());
|
||||
Session session = request.getSession()
|
||||
.withRemoteRepositories(
|
||||
request.getModelRepositoryHolder().getRepositories());
|
||||
importSource = modelResolver.resolveModel(session, dependency, new AtomicReference<>());
|
||||
} catch (ModelBuilderException e) {
|
||||
StringBuilder buffer = new StringBuilder(256);
|
||||
buffer.append("Non-resolvable import POM");
|
||||
|
@ -1308,12 +1344,17 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
final ModelBuilderResult importResult;
|
||||
try {
|
||||
ModelBuilderRequest importRequest = ModelBuilderRequest.builder()
|
||||
.session(request.getSession())
|
||||
.session(request.getSession()
|
||||
.withRemoteRepositories(
|
||||
request.getModelRepositoryHolder().getRepositories()))
|
||||
.validationLevel(ModelBuilderRequest.VALIDATION_LEVEL_MINIMAL)
|
||||
.systemProperties(request.getSystemProperties())
|
||||
.userProperties(request.getUserProperties())
|
||||
.source(importSource)
|
||||
.modelResolver(modelResolver.newCopy())
|
||||
.modelResolver(modelResolver)
|
||||
.modelCache(request.getModelCache())
|
||||
.modelRepositoryHolder(
|
||||
request.getModelRepositoryHolder().copy())
|
||||
.twoPhaseBuilding(false)
|
||||
.build();
|
||||
importResult = build(importRequest, importIds);
|
||||
|
@ -1327,12 +1368,7 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
importModel = importResult.getEffectiveModel();
|
||||
}
|
||||
|
||||
importMgmt = importModel.getDependencyManagement();
|
||||
|
||||
if (importMgmt == null) {
|
||||
importMgmt = DependencyManagement.newInstance();
|
||||
}
|
||||
return importMgmt;
|
||||
return importModel;
|
||||
}
|
||||
|
||||
private static <T> T cache(
|
||||
|
@ -1409,10 +1445,7 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
}
|
||||
|
||||
private static ModelCache getModelCache(ModelBuilderRequest request) {
|
||||
return request.isProjectBuild()
|
||||
? DefaultModelCache.newInstance(
|
||||
InternalSession.from(request.getSession()).getSession())
|
||||
: null;
|
||||
return request.getModelCache();
|
||||
}
|
||||
|
||||
private static ModelBuildingListener getModelBuildingListener(ModelBuilderRequest request) {
|
||||
|
|
|
@ -32,6 +32,7 @@ import org.apache.maven.api.services.ModelBuilder;
|
|||
import org.apache.maven.api.services.ModelBuilderException;
|
||||
import org.apache.maven.api.services.ModelBuilderRequest;
|
||||
import org.apache.maven.api.services.ModelProblem;
|
||||
import org.apache.maven.api.services.ModelRepositoryHolder;
|
||||
import org.apache.maven.api.services.ModelResolver;
|
||||
import org.apache.maven.api.services.ModelResolverException;
|
||||
import org.apache.maven.api.services.ModelSource;
|
||||
|
@ -189,14 +190,20 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader
|
|||
}
|
||||
|
||||
try {
|
||||
Session iSession = InternalSession.from(session);
|
||||
InternalSession iSession = InternalSession.from(session);
|
||||
Session iSessionWithRepos = iSession.withRemoteRepositories(request.getRepositories().stream()
|
||||
.map(iSession::getRemoteRepository)
|
||||
.toList());
|
||||
String gav =
|
||||
pomArtifact.getGroupId() + ":" + pomArtifact.getArtifactId() + ":" + pomArtifact.getVersion();
|
||||
ModelResolver modelResolver =
|
||||
new DefaultModelResolver(remoteRepositoryManager, request.getRepositories());
|
||||
ModelResolver modelResolver = new DefaultModelResolver();
|
||||
ModelRepositoryHolder modelRepositoryHolder = new DefaultModelRepositoryHolder(
|
||||
iSessionWithRepos,
|
||||
DefaultModelRepositoryHolder.RepositoryMerging.REQUEST_DOMINANT,
|
||||
iSessionWithRepos.getRemoteRepositories());
|
||||
ModelBuilderRequest modelRequest = ModelBuilderRequest.builder()
|
||||
.session(iSession)
|
||||
.projectBuild(true)
|
||||
.session(iSessionWithRepos)
|
||||
.projectBuild(false)
|
||||
.processPlugins(false)
|
||||
.twoPhaseBuilding(false)
|
||||
.source(ModelSource.fromPath(pomArtifact.getPath(), gav))
|
||||
|
@ -205,6 +212,8 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader
|
|||
.systemProperties(toProperties(session.getUserProperties(), session.getSystemProperties()))
|
||||
.userProperties(Map.of())
|
||||
.modelResolver(modelResolver)
|
||||
.modelRepositoryHolder(modelRepositoryHolder)
|
||||
.modelCache(DefaultModelCache.newInstance(session, false))
|
||||
.build();
|
||||
|
||||
model = modelBuilder.build(modelRequest).getEffectiveModel();
|
||||
|
|
|
@ -23,8 +23,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.apache.maven.api.services.ModelCache;
|
||||
import org.apache.maven.api.services.Source;
|
||||
import org.apache.maven.api.services.model.ModelCache;
|
||||
import org.eclipse.aether.RepositoryCache;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
|
||||
|
@ -38,20 +38,29 @@ public class DefaultModelCache implements ModelCache {
|
|||
private static final String KEY = DefaultModelCache.class.getName();
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static ModelCache newInstance(RepositorySystemSession session) {
|
||||
public static ModelCache newInstance(RepositorySystemSession session, boolean anew) {
|
||||
ConcurrentHashMap<Object, Supplier<?>> cache;
|
||||
RepositoryCache repositoryCache = session.getCache();
|
||||
RepositoryCache repositoryCache = session != null ? session.getCache() : null;
|
||||
if (repositoryCache == null) {
|
||||
cache = new ConcurrentHashMap<>();
|
||||
return new DefaultModelCache(new ConcurrentHashMap<>());
|
||||
} else {
|
||||
cache = (ConcurrentHashMap<Object, Supplier<?>>)
|
||||
repositoryCache.computeIfAbsent(session, KEY, ConcurrentHashMap::new);
|
||||
if (anew) {
|
||||
cache = new ConcurrentHashMap<>();
|
||||
repositoryCache.put(session, KEY, cache);
|
||||
} else {
|
||||
cache = (ConcurrentHashMap<Object, Supplier<?>>)
|
||||
repositoryCache.computeIfAbsent(session, KEY, ConcurrentHashMap::new);
|
||||
}
|
||||
return new DefaultModelCache(cache);
|
||||
}
|
||||
return new DefaultModelCache(cache);
|
||||
}
|
||||
|
||||
private final ConcurrentMap<Object, Supplier<?>> cache;
|
||||
|
||||
public DefaultModelCache() {
|
||||
this(new ConcurrentHashMap<>());
|
||||
}
|
||||
|
||||
private DefaultModelCache(ConcurrentMap<Object, Supplier<?>> cache) {
|
||||
this.cache = requireNonNull(cache);
|
||||
}
|
||||
|
@ -125,7 +134,7 @@ public class DefaultModelCache implements ModelCache {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GavCacheKey{" + "gav='" + gav + '\'' + ", tag='" + tag + '\'' + '}';
|
||||
return "GavCacheKey[" + "gav='" + gav + '\'' + ", tag='" + tag + '\'' + ']';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -144,7 +153,8 @@ public class DefaultModelCache implements ModelCache {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SourceCacheKey{" + "source=" + source + ", tag='" + tag + '\'' + '}';
|
||||
return "SourceCacheKey[" + "location=" + source.getLocation() + ", tag=" + tag + ", path="
|
||||
+ source.getPath() + ']';
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven.internal.impl.resolver;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.maven.api.RemoteRepository;
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.model.Repository;
|
||||
import org.apache.maven.api.services.ModelRepositoryHolder;
|
||||
import org.apache.maven.api.services.RepositoryFactory;
|
||||
|
||||
public class DefaultModelRepositoryHolder implements ModelRepositoryHolder {
|
||||
|
||||
/**
|
||||
* The possible merge modes for combining remote repositories.
|
||||
*/
|
||||
public enum RepositoryMerging {
|
||||
|
||||
/**
|
||||
* The repositories declared in the POM have precedence over the repositories specified in the request.
|
||||
*/
|
||||
POM_DOMINANT,
|
||||
|
||||
/**
|
||||
* The repositories specified in the request have precedence over the repositories declared in the POM.
|
||||
*/
|
||||
REQUEST_DOMINANT,
|
||||
}
|
||||
|
||||
final Session session;
|
||||
final RepositoryMerging repositoryMerging;
|
||||
|
||||
List<RemoteRepository> pomRepositories;
|
||||
List<RemoteRepository> repositories;
|
||||
List<RemoteRepository> externalRepositories;
|
||||
Set<String> ids;
|
||||
|
||||
public DefaultModelRepositoryHolder(
|
||||
Session session, RepositoryMerging repositoryMerging, List<RemoteRepository> externalRepositories) {
|
||||
this.session = session;
|
||||
this.repositoryMerging = repositoryMerging;
|
||||
this.pomRepositories = List.of();
|
||||
this.externalRepositories = List.copyOf(externalRepositories);
|
||||
this.repositories = List.copyOf(externalRepositories);
|
||||
this.ids = new HashSet<>();
|
||||
}
|
||||
|
||||
protected DefaultModelRepositoryHolder(DefaultModelRepositoryHolder holder) {
|
||||
this.session = holder.session;
|
||||
this.repositoryMerging = holder.repositoryMerging;
|
||||
this.pomRepositories = List.copyOf(holder.pomRepositories);
|
||||
this.externalRepositories = List.copyOf(holder.externalRepositories);
|
||||
this.repositories = List.copyOf(holder.repositories);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void merge(List<Repository> toAdd, boolean replace) {
|
||||
List<RemoteRepository> repos =
|
||||
toAdd.stream().map(session::createRemoteRepository).toList();
|
||||
if (replace) {
|
||||
Set<String> ids = repos.stream().map(RemoteRepository::getId).collect(Collectors.toSet());
|
||||
repositories =
|
||||
repositories.stream().filter(r -> !ids.contains(r.getId())).toList();
|
||||
pomRepositories = pomRepositories.stream()
|
||||
.filter(r -> !ids.contains(r.getId()))
|
||||
.toList();
|
||||
} else {
|
||||
Set<String> ids =
|
||||
pomRepositories.stream().map(RemoteRepository::getId).collect(Collectors.toSet());
|
||||
repos = repos.stream().filter(r -> !ids.contains(r.getId())).toList();
|
||||
}
|
||||
|
||||
RepositoryFactory repositoryFactory = session.getService(RepositoryFactory.class);
|
||||
if (repositoryMerging == RepositoryMerging.REQUEST_DOMINANT) {
|
||||
repositories = repositoryFactory.aggregate(session, repositories, repos, true);
|
||||
pomRepositories = repositories;
|
||||
} else {
|
||||
pomRepositories = repositoryFactory.aggregate(session, pomRepositories, repos, true);
|
||||
repositories = repositoryFactory.aggregate(session, pomRepositories, externalRepositories, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<org.apache.maven.api.RemoteRepository> getRepositories() {
|
||||
return List.copyOf(repositories);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelRepositoryHolder copy() {
|
||||
return new DefaultModelRepositoryHolder(this);
|
||||
}
|
||||
}
|
|
@ -19,123 +19,63 @@
|
|||
package org.apache.maven.internal.impl.resolver;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.maven.api.ArtifactCoordinate;
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.Version;
|
||||
import org.apache.maven.api.annotations.Nonnull;
|
||||
import org.apache.maven.api.di.Inject;
|
||||
import org.apache.maven.api.model.Dependency;
|
||||
import org.apache.maven.api.model.Parent;
|
||||
import org.apache.maven.api.model.Repository;
|
||||
import org.apache.maven.api.di.Named;
|
||||
import org.apache.maven.api.di.Singleton;
|
||||
import org.apache.maven.api.services.ArtifactResolverException;
|
||||
import org.apache.maven.api.services.ModelResolver;
|
||||
import org.apache.maven.api.services.ModelResolverException;
|
||||
import org.apache.maven.api.services.ModelSource;
|
||||
import org.apache.maven.api.services.VersionRangeResolverException;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.impl.RemoteRepositoryManager;
|
||||
import org.eclipse.aether.repository.RemoteRepository;
|
||||
|
||||
/**
|
||||
* A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have
|
||||
* been initially specified and repositories discovered in dependency POMs are recessively merged into the search chain.
|
||||
* A model resolver to assist building of dependency POMs.
|
||||
*
|
||||
* @see DefaultArtifactDescriptorReader
|
||||
*/
|
||||
@Named
|
||||
@Singleton
|
||||
public class DefaultModelResolver implements ModelResolver {
|
||||
|
||||
private List<RemoteRepository> repositories;
|
||||
|
||||
private final List<RemoteRepository> externalRepositories;
|
||||
|
||||
private final RemoteRepositoryManager remoteRepositoryManager;
|
||||
|
||||
private final Set<String> repositoryIds;
|
||||
|
||||
@Inject
|
||||
public DefaultModelResolver(RemoteRepositoryManager remoteRepositoryManager) {
|
||||
this(remoteRepositoryManager, List.of());
|
||||
}
|
||||
|
||||
public DefaultModelResolver(RemoteRepositoryManager remoteRepositoryManager, List<RemoteRepository> repositories) {
|
||||
this.remoteRepositoryManager = remoteRepositoryManager;
|
||||
this.repositories = repositories;
|
||||
this.externalRepositories = Collections.unmodifiableList(new ArrayList<>(repositories));
|
||||
|
||||
this.repositoryIds = new HashSet<>();
|
||||
}
|
||||
|
||||
private DefaultModelResolver(DefaultModelResolver original) {
|
||||
this.remoteRepositoryManager = original.remoteRepositoryManager;
|
||||
this.repositories = new ArrayList<>(original.repositories);
|
||||
this.externalRepositories = original.externalRepositories;
|
||||
this.repositoryIds = new HashSet<>(original.repositoryIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRepository(@Nonnull Session session, Repository repository) {
|
||||
addRepository(session, repository, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRepository(Session session, Repository repository, boolean replace) {
|
||||
RepositorySystemSession rsession = InternalSession.from(session).getSession();
|
||||
if (rsession.isIgnoreArtifactDescriptorRepositories()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!repositoryIds.add(repository.getId())) {
|
||||
if (!replace) {
|
||||
return;
|
||||
}
|
||||
|
||||
removeMatchingRepository(repositories, repository.getId());
|
||||
}
|
||||
|
||||
List<RemoteRepository> newRepositories =
|
||||
Collections.singletonList(ArtifactDescriptorUtils.toRemoteRepository(repository));
|
||||
|
||||
this.repositories =
|
||||
remoteRepositoryManager.aggregateRepositories(rsession, repositories, newRepositories, true);
|
||||
}
|
||||
|
||||
private static void removeMatchingRepository(Iterable<RemoteRepository> repositories, final String id) {
|
||||
Iterator<RemoteRepository> iterator = repositories.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
RemoteRepository remoteRepository = iterator.next();
|
||||
if (remoteRepository.getId().equals(id)) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelResolver newCopy() {
|
||||
return new DefaultModelResolver(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelSource resolveModel(Session session, String groupId, String artifactId, String version)
|
||||
public ModelSource resolveModel(
|
||||
Session session, String groupId, String artifactId, String version, Consumer<String> resolvedVersion)
|
||||
throws ModelResolverException {
|
||||
try {
|
||||
session = session.withRemoteRepositories(repositories.stream()
|
||||
.map(InternalSession.from(session)::getRemoteRepository)
|
||||
.toList());
|
||||
ArtifactCoordinate coord = session.createArtifactCoordinate(groupId, artifactId, version, "pom");
|
||||
if (coord.getVersion().getVersionRange() != null
|
||||
&& coord.getVersion().getVersionRange().getUpperBoundary() == null) {
|
||||
// Message below is checked for in the MNG-2199 core IT.
|
||||
throw new ModelResolverException(
|
||||
String.format("The requested version range '%s' does not specify an upper bound", version),
|
||||
groupId,
|
||||
artifactId,
|
||||
version);
|
||||
}
|
||||
List<Version> versions = session.resolveVersionRange(coord);
|
||||
if (versions.isEmpty()) {
|
||||
throw new ModelResolverException(
|
||||
String.format("No versions matched the requested version range '%s'", version),
|
||||
groupId,
|
||||
artifactId,
|
||||
version);
|
||||
}
|
||||
String newVersion = versions.get(versions.size() - 1).asString();
|
||||
if (!version.equals(newVersion)) {
|
||||
resolvedVersion.accept(newVersion);
|
||||
}
|
||||
|
||||
Map.Entry<org.apache.maven.api.Artifact, Path> resolved =
|
||||
session.resolveArtifact(session.createArtifactCoordinate(groupId, artifactId, version, "pom"));
|
||||
return ModelSource.fromPath(resolved.getValue(), groupId + ":" + artifactId + ":" + version);
|
||||
} catch (ArtifactResolverException e) {
|
||||
session.resolveArtifact(session.createArtifactCoordinate(groupId, artifactId, newVersion, "pom"));
|
||||
return ModelSource.fromPath(resolved.getValue(), groupId + ":" + artifactId + ":" + newVersion);
|
||||
} catch (VersionRangeResolverException | ArtifactResolverException e) {
|
||||
throw new ModelResolverException(
|
||||
e.getMessage() + " (remote repositories: "
|
||||
+ session.getRemoteRepositories().stream()
|
||||
|
@ -148,104 +88,4 @@ public class DefaultModelResolver implements ModelResolver {
|
|||
e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelSource resolveModel(Session session, Parent parent, AtomicReference<Parent> modified)
|
||||
throws ModelResolverException {
|
||||
try {
|
||||
session = session.withRemoteRepositories(repositories.stream()
|
||||
.map(InternalSession.from(session)::getRemoteRepository)
|
||||
.toList());
|
||||
ArtifactCoordinate coord = session.createArtifactCoordinate(
|
||||
parent.getGroupId(), parent.getArtifactId(), parent.getVersion(), "pom");
|
||||
if (coord.getVersion().getVersionRange() != null
|
||||
&& coord.getVersion().getVersionRange().getUpperBoundary() == null) {
|
||||
// Message below is checked for in the MNG-2199 core IT.
|
||||
throw new ModelResolverException(
|
||||
String.format(
|
||||
"The requested parent version range '%s' does not specify an upper bound",
|
||||
parent.getVersion()),
|
||||
parent.getGroupId(),
|
||||
parent.getArtifactId(),
|
||||
parent.getVersion());
|
||||
}
|
||||
List<Version> versions = session.resolveVersionRange(coord);
|
||||
if (versions.isEmpty()) {
|
||||
throw new ModelResolverException(
|
||||
String.format(
|
||||
"No versions matched the requested parent version range '%s'", parent.getVersion()),
|
||||
parent.getGroupId(),
|
||||
parent.getArtifactId(),
|
||||
parent.getVersion());
|
||||
}
|
||||
String newVersion = versions.get(versions.size() - 1).asString();
|
||||
if (!parent.getVersion().equals(newVersion)) {
|
||||
modified.set(parent.withVersion(newVersion));
|
||||
}
|
||||
|
||||
return resolveModel(session, parent.getGroupId(), parent.getArtifactId(), newVersion);
|
||||
} catch (final VersionRangeResolverException e) {
|
||||
throw new ModelResolverException(
|
||||
e.getMessage() + " (remote repositories: "
|
||||
+ session.getRemoteRepositories().stream()
|
||||
.map(Object::toString)
|
||||
.collect(Collectors.joining(", "))
|
||||
+ ")",
|
||||
parent.getGroupId(),
|
||||
parent.getArtifactId(),
|
||||
parent.getVersion(),
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelSource resolveModel(Session session, Dependency dependency, AtomicReference<Dependency> modified)
|
||||
throws ModelResolverException {
|
||||
try {
|
||||
session = session.withRemoteRepositories(repositories.stream()
|
||||
.map(InternalSession.from(session)::getRemoteRepository)
|
||||
.toList());
|
||||
ArtifactCoordinate coord = session.createArtifactCoordinate(
|
||||
dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), "pom");
|
||||
if (coord.getVersion().getVersionRange() != null
|
||||
&& coord.getVersion().getVersionRange().getUpperBoundary() == null) {
|
||||
// Message below is checked for in the MNG-2199 core IT.
|
||||
throw new ModelResolverException(
|
||||
String.format(
|
||||
"The requested dependency version range '%s' does not specify an upper bound",
|
||||
dependency.getVersion()),
|
||||
dependency.getGroupId(),
|
||||
dependency.getArtifactId(),
|
||||
dependency.getVersion());
|
||||
}
|
||||
List<Version> versions = session.resolveVersionRange(coord);
|
||||
if (versions.isEmpty()) {
|
||||
throw new ModelResolverException(
|
||||
String.format(
|
||||
"No versions matched the requested dependency version range '%s'",
|
||||
dependency.getVersion()),
|
||||
dependency.getGroupId(),
|
||||
dependency.getArtifactId(),
|
||||
dependency.getVersion());
|
||||
}
|
||||
|
||||
String newVersion = versions.get(versions.size() - 1).toString();
|
||||
if (!dependency.getVersion().equals(newVersion)) {
|
||||
modified.set(dependency.withVersion(newVersion));
|
||||
}
|
||||
|
||||
return resolveModel(session, dependency.getGroupId(), dependency.getArtifactId(), newVersion);
|
||||
} catch (VersionRangeResolverException e) {
|
||||
throw new ModelResolverException(
|
||||
e.getMessage() + " (remote repositories: "
|
||||
+ session.getRemoteRepositories().stream()
|
||||
.map(Object::toString)
|
||||
.collect(Collectors.joining(", "))
|
||||
+ ")",
|
||||
dependency.getGroupId(),
|
||||
dependency.getArtifactId(),
|
||||
dependency.getVersion(),
|
||||
e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,207 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven.internal.impl.resolver;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import org.apache.maven.api.LocalRepository;
|
||||
import org.apache.maven.api.RemoteRepository;
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.model.Dependency;
|
||||
import org.apache.maven.api.model.Parent;
|
||||
import org.apache.maven.api.services.ModelResolver;
|
||||
import org.apache.maven.api.services.ModelResolverException;
|
||||
import org.apache.maven.internal.impl.standalone.ApiRunner;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
/**
|
||||
* Test cases for the project {@code ModelResolver} implementation.
|
||||
*/
|
||||
class DefaultModelResolverTest {
|
||||
|
||||
Session session;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
Path basedir = Paths.get(System.getProperty("basedir", ""));
|
||||
Path localRepoPath = basedir.resolve("target/local-repo");
|
||||
Path remoteRepoPath = basedir.resolve("src/test/remote-repo");
|
||||
Session s = ApiRunner.createSession();
|
||||
LocalRepository localRepository = s.createLocalRepository(localRepoPath);
|
||||
RemoteRepository remoteRepository = s.createRemoteRepository(
|
||||
RemoteRepository.CENTRAL_ID, remoteRepoPath.toUri().toString());
|
||||
session = s.withLocalRepository(localRepository).withRemoteRepositories(List.of(remoteRepository));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveParentThrowsModelResolverExceptionWhenNotFound() throws Exception {
|
||||
final Parent parent = Parent.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("0")
|
||||
.build();
|
||||
|
||||
ModelResolverException e = assertThrows(
|
||||
ModelResolverException.class,
|
||||
() -> newModelResolver().resolveModel(session, parent, new AtomicReference<>()),
|
||||
"Expected 'ModelResolverException' not thrown.");
|
||||
assertNotNull(e.getMessage());
|
||||
assertThat(e.getMessage(), containsString("Could not find artifact org.apache:apache:pom:0 in central"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveParentThrowsModelResolverExceptionWhenNoMatchingVersionFound() throws Exception {
|
||||
final Parent parent = Parent.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("[2.0,2.1)")
|
||||
.build();
|
||||
|
||||
ModelResolverException e = assertThrows(
|
||||
ModelResolverException.class,
|
||||
() -> newModelResolver().resolveModel(session, parent, new AtomicReference<>()),
|
||||
"Expected 'ModelResolverException' not thrown.");
|
||||
assertEquals("No versions matched the requested version range '[2.0,2.1)'", e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveParentThrowsModelResolverExceptionWhenUsingRangesWithoutUpperBound() throws Exception {
|
||||
final Parent parent = Parent.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("[1,)")
|
||||
.build();
|
||||
|
||||
ModelResolverException e = assertThrows(
|
||||
ModelResolverException.class,
|
||||
() -> newModelResolver().resolveModel(session, parent, new AtomicReference<>()),
|
||||
"Expected 'ModelResolverException' not thrown.");
|
||||
assertEquals("The requested version range '[1,)' does not specify an upper bound", e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveParentSuccessfullyResolvesExistingParentWithoutRange() throws Exception {
|
||||
final Parent parent = Parent.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("1")
|
||||
.build();
|
||||
|
||||
assertNotNull(this.newModelResolver().resolveModel(session, parent, new AtomicReference<>()));
|
||||
assertEquals("1", parent.getVersion());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveParentSuccessfullyResolvesExistingParentUsingHighestVersion() throws Exception {
|
||||
final Parent parent = Parent.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("(,2.0)")
|
||||
.build();
|
||||
|
||||
AtomicReference<org.apache.maven.api.model.Parent> modified = new AtomicReference<>();
|
||||
assertNotNull(this.newModelResolver().resolveModel(session, parent, modified));
|
||||
assertEquals("1", modified.get().getVersion());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveDependencyThrowsModelResolverExceptionWhenNotFound() throws Exception {
|
||||
final Dependency dependency = Dependency.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("0")
|
||||
.build();
|
||||
|
||||
ModelResolverException e = assertThrows(
|
||||
ModelResolverException.class,
|
||||
() -> newModelResolver().resolveModel(session, dependency, new AtomicReference<>()),
|
||||
"Expected 'ModelResolverException' not thrown.");
|
||||
assertNotNull(e.getMessage());
|
||||
assertThat(e.getMessage(), containsString("Could not find artifact org.apache:apache:pom:0 in central"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveDependencyThrowsModelResolverExceptionWhenNoMatchingVersionFound() throws Exception {
|
||||
final Dependency dependency = Dependency.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("[2.0,2.1)")
|
||||
.build();
|
||||
|
||||
ModelResolverException e = assertThrows(
|
||||
ModelResolverException.class,
|
||||
() -> newModelResolver().resolveModel(session, dependency, new AtomicReference<>()),
|
||||
"Expected 'ModelResolverException' not thrown.");
|
||||
assertEquals("No versions matched the requested version range '[2.0,2.1)'", e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveDependencyThrowsModelResolverExceptionWhenUsingRangesWithoutUpperBound() throws Exception {
|
||||
final Dependency dependency = Dependency.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("[1,)")
|
||||
.build();
|
||||
|
||||
ModelResolverException e = assertThrows(
|
||||
ModelResolverException.class,
|
||||
() -> newModelResolver().resolveModel(session, dependency, new AtomicReference<>()),
|
||||
"Expected 'ModelResolverException' not thrown.");
|
||||
assertEquals("The requested version range '[1,)' does not specify an upper bound", e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveDependencySuccessfullyResolvesExistingDependencyWithoutRange() throws Exception {
|
||||
final Dependency dependency = Dependency.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("1")
|
||||
.build();
|
||||
|
||||
assertNotNull(this.newModelResolver().resolveModel(session, dependency, new AtomicReference<>()));
|
||||
assertEquals("1", dependency.getVersion());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testResolveDependencySuccessfullyResolvesExistingDependencyUsingHighestVersion() throws Exception {
|
||||
final Dependency dependency = Dependency.newBuilder()
|
||||
.groupId("org.apache")
|
||||
.artifactId("apache")
|
||||
.version("(,2.0)")
|
||||
.build();
|
||||
|
||||
AtomicReference<org.apache.maven.api.model.Dependency> modified = new AtomicReference<>();
|
||||
assertNotNull(this.newModelResolver().resolveModel(session, dependency, modified));
|
||||
assertEquals("1", modified.get().getVersion());
|
||||
}
|
||||
|
||||
private ModelResolver newModelResolver() throws Exception {
|
||||
return new DefaultModelResolver();
|
||||
}
|
||||
}
|
|
@ -1033,8 +1033,7 @@ public class RepositorySystemSupplier implements Supplier<RepositorySystem> {
|
|||
new DefaultPluginConfigurationExpander(),
|
||||
new ProfileActivationFilePathInterpolator(new DefaultPathTranslator(), new DefaultRootLocator()),
|
||||
new BuildModelTransformer(),
|
||||
new DefaultModelVersionParser(getVersionScheme()),
|
||||
getRemoteRepositoryManager());
|
||||
new DefaultModelVersionParser(getVersionScheme()));
|
||||
}
|
||||
|
||||
private RepositorySystem repositorySystem;
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.apache.maven.api.Session;
|
|||
import org.apache.maven.api.services.ModelBuilder;
|
||||
import org.apache.maven.api.services.ModelBuilderRequest;
|
||||
import org.apache.maven.api.services.ModelBuilderResult;
|
||||
import org.apache.maven.api.services.ModelSource;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
@ -43,8 +44,11 @@ class TestApiStandalone {
|
|||
Session session = ApiRunner.createSession();
|
||||
|
||||
ModelBuilder builder = session.getService(ModelBuilder.class);
|
||||
ModelBuilderResult result = builder.build(
|
||||
ModelBuilderRequest.build(session, Paths.get("pom.xml").toAbsolutePath()));
|
||||
ModelBuilderResult result = builder.build(ModelBuilderRequest.builder()
|
||||
.session(session)
|
||||
.source(ModelSource.fromPath(Paths.get("pom.xml").toAbsolutePath()))
|
||||
.projectBuild(true)
|
||||
.build());
|
||||
assertNotNull(result.getEffectiveModel());
|
||||
|
||||
ArtifactCoordinate coord = session.createArtifactCoordinate("org.apache.maven:maven-api-core:4.0.0-alpha-13");
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
~ Copyright 2005-2006 The Apache Software Foundation.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does
|
||||
define the settings common to all projects at Apache -->
|
||||
<groupId>org.apache</groupId>
|
||||
<artifactId>apache</artifactId>
|
||||
<version>1</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>The Apache Software Foundation</name>
|
||||
<description>
|
||||
The Apache Software Foundation provides support for the Apache community of open-source software projects.
|
||||
The Apache projects are characterized by a collaborative, consensus based development process, an open and
|
||||
pragmatic software license, and a desire to create high quality software that leads the way in its field.
|
||||
We consider ourselves not simply a group of projects sharing a server, but rather a community of developers
|
||||
and users.
|
||||
</description>
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The Apache Software License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||
<distribution>repo</distribution>
|
||||
</license>
|
||||
</licenses>
|
||||
<organization>
|
||||
<name>Apache Software Foundation</name>
|
||||
<url>http://www.apache.org/</url>
|
||||
</organization>
|
||||
<url>http://www.apache.org/</url>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>apache.snapshots</id>
|
||||
<name>Apache Snapshot Repository</name>
|
||||
<url>http://svn.apache.org/maven-snapshot-repository</url>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<!-- Site omitted - each project must provide their own -->
|
||||
<repository>
|
||||
<id>apache.releases</id>
|
||||
<name>Apache Release Distribution Repository</name>
|
||||
<url>scp://minotaur.apache.org/www/www.apache.org/dist/maven-repository</url>
|
||||
</repository>
|
||||
<snapshotRepository>
|
||||
<id>apache.snapshots</id>
|
||||
<name>Apache Development Snapshot Repository</name>
|
||||
<url>scp://minotaur.apache.org/www/cvs.apache.org/maven-snapshot-repository</url>
|
||||
</snapshotRepository>
|
||||
</distributionManagement>
|
||||
<mailingLists>
|
||||
<mailingList>
|
||||
<name>Apache Announce List</name>
|
||||
<subscribe>announce-subscribe@apache.org</subscribe>
|
||||
<unsubscribe>announce-unsubscribe@apache.org</unsubscribe>
|
||||
<post>announce@apache.org</post>
|
||||
<archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>
|
||||
</mailingList>
|
||||
</mailingLists>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache</groupId>
|
||||
<artifactId>apache</artifactId>
|
||||
<versioning>
|
||||
<latest>1</latest>
|
||||
<release>1</release>
|
||||
<versions>
|
||||
<version>1</version>
|
||||
</versions>
|
||||
<lastUpdated>20150428055824</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>a</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Maven Integration Test :: Dummy Artifact</name>
|
||||
<description>
|
||||
|
||||
</description>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
</project>
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>a</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023222756</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>b</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Maven Integration Test :: Dummy Artifact</name>
|
||||
<description>
|
||||
|
||||
</description>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>a</artifactId>
|
||||
<version>0.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>b</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023222817</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>bom</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>Maven Integration Test :: Dummy BOM</name>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>a</artifactId>
|
||||
<version>0.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
</project>
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>bom</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
</versioning>
|
||||
</metadata>
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>parent</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>Maven Integration Test :: Dummy Parent</name>
|
||||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.its</groupId>
|
||||
<artifactId>parent</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.its.plugins</groupId>
|
||||
<artifactId>maven-it-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.its.plugins</groupId>
|
||||
<artifactId>maven-it-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.its.plugins</groupId>
|
||||
<artifactId>maven-it-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023233513</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>it</prefix>
|
||||
<artifactId>maven-it-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,23 @@
|
|||
<project>
|
||||
<parent>
|
||||
<artifactId>maven</artifactId>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<version>2.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<name>Maven Plugin API</name>
|
||||
<version>2.0</version>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<distributionManagement>
|
||||
<status>deployed</status>
|
||||
</distributionManagement>
|
||||
</project>
|
|
@ -0,0 +1,264 @@
|
|||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Maven</name>
|
||||
<version>2.0</version>
|
||||
<description>Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.</description>
|
||||
<url>http://maven.apache.org/maven2/</url>
|
||||
<issueManagement>
|
||||
<system>jira</system>
|
||||
<url>http://jira.codehaus.org/browse/MNG</url>
|
||||
</issueManagement>
|
||||
<ciManagement>
|
||||
<system>continuum</system>
|
||||
<notifiers>
|
||||
<notifier>
|
||||
<configuration>
|
||||
<address>commits@maven.apache.org</address>
|
||||
</configuration>
|
||||
</notifier>
|
||||
</notifiers>
|
||||
</ciManagement>
|
||||
<mailingLists>
|
||||
<mailingList>
|
||||
<name>Maven User List</name>
|
||||
<subscribe>users-subscribe@maven.apache.org</subscribe>
|
||||
<unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>
|
||||
<post>users@maven.apache.org</post>
|
||||
<archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>
|
||||
</mailingList>
|
||||
<mailingList>
|
||||
<name>Maven Developer List</name>
|
||||
<subscribe>dev-subscribe@maven.apache.org</subscribe>
|
||||
<unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>
|
||||
<post>dev@maven.apache.org</post>
|
||||
<archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>
|
||||
</mailingList>
|
||||
<mailingList>
|
||||
<name>Maven Commits List</name>
|
||||
<subscribe>commits-subscribe@maven.apache.org</subscribe>
|
||||
<unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>
|
||||
<post>commits@maven.apache.org</post>
|
||||
<archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>
|
||||
</mailingList>
|
||||
<mailingList>
|
||||
<name>Apache Announce List</name>
|
||||
<subscribe>announce-subscribe@apache.org</subscribe>
|
||||
<unsubscribe>announce-unsubscribe@apache.org</unsubscribe>
|
||||
<post>announce@apache.org</post>
|
||||
<archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>
|
||||
</mailingList>
|
||||
</mailingLists>
|
||||
<developers>
|
||||
<developer>
|
||||
<id>jvanzyl</id>
|
||||
<name>Jason van Zyl</name>
|
||||
<email>jason@maven.org</email>
|
||||
<organization>ASF</organization>
|
||||
<roles>
|
||||
<role>PMC Chair</role>
|
||||
</roles>
|
||||
<timezone>-5</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>brett</id>
|
||||
<name>Brett Porter</name>
|
||||
<email>brett@apache.org</email>
|
||||
<organization>ASF</organization>
|
||||
<roles>
|
||||
<role>PMC Member</role>
|
||||
</roles>
|
||||
<timezone>+10</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>evenisse</id>
|
||||
<name>Emmanuel Venisse</name>
|
||||
<email>evenisse@apache.org</email>
|
||||
<organization>ASF</organization>
|
||||
<roles>
|
||||
<role>PMC Member</role>
|
||||
</roles>
|
||||
<timezone>+1</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>jdcasey</id>
|
||||
<name>John Casey</name>
|
||||
<email>jdcasey@apache.org</email>
|
||||
<organization>ASF</organization>
|
||||
<roles>
|
||||
<role>PMC Member</role>
|
||||
</roles>
|
||||
<timezone>-5</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>kenney</id>
|
||||
<name>Kenney Westerhof</name>
|
||||
<email>kenney@apache.org</email>
|
||||
<organization>Neonics</organization>
|
||||
<roles>
|
||||
<role>PMC Member</role>
|
||||
</roles>
|
||||
<timezone>+1</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>trygvis</id>
|
||||
<name>Trygve Laugstol</name>
|
||||
<email>trygvis@apache.org</email>
|
||||
<organization>ASF</organization>
|
||||
<roles>
|
||||
<role>PMC Member</role>
|
||||
</roles>
|
||||
<timezone>+1</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>vmassol</id>
|
||||
<name>Vincent Massol</name>
|
||||
<email>vmassol@apache.org</email>
|
||||
<organization>ASF</organization>
|
||||
<roles>
|
||||
<role>PMC Member</role>
|
||||
</roles>
|
||||
<timezone>+1</timezone>
|
||||
</developer>
|
||||
<developer>
|
||||
<id>vsiveton</id>
|
||||
<name>Vincent Siveton</name>
|
||||
<email>vsiveton@apache.org</email>
|
||||
<organization>ASF</organization>
|
||||
<roles>
|
||||
<role>Committer</role>
|
||||
</roles>
|
||||
<timezone>-5</timezone>
|
||||
</developer>
|
||||
</developers>
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The Apache Software License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||
<distribution>repo</distribution>
|
||||
</license>
|
||||
</licenses>
|
||||
<scm>
|
||||
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/components/tags/maven-2.0</connection>
|
||||
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/components/tags/maven-2.0</developerConnection>
|
||||
<url>http://svn.apache.org/viewcvs.cgi/maven/components/tags/maven-2.0</url>
|
||||
</scm>
|
||||
<organization>
|
||||
<name>Apache Software Foundation</name>
|
||||
<url>http://www.apache.org/</url>
|
||||
</organization>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-release-plugin</artifactId>
|
||||
<configuration>
|
||||
<tagBase>https://svn.apache.org/repos/asf/maven/components/tags</tagBase>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
<modules>
|
||||
<module>maven-archiver</module>
|
||||
<module>maven-artifact</module>
|
||||
<module>maven-artifact-manager</module>
|
||||
<module>maven-artifact-ant</module>
|
||||
<module>maven-artifact-test</module>
|
||||
<module>maven-core</module>
|
||||
<module>maven-error-diagnostics</module>
|
||||
<module>maven-model</module>
|
||||
<module>maven-monitor</module>
|
||||
<module>maven-plugin-api</module>
|
||||
<module>maven-plugin-descriptor</module>
|
||||
<module>maven-plugin-parameter-documenter</module>
|
||||
<module>maven-plugin-registry</module>
|
||||
<module>maven-plugin-tools</module>
|
||||
<module>maven-profile</module>
|
||||
<module>maven-project</module>
|
||||
<module>maven-reporting</module>
|
||||
<module>maven-repository-metadata</module>
|
||||
<module>maven-script</module>
|
||||
<module>maven-settings</module>
|
||||
</modules>
|
||||
<repositories>
|
||||
<repository>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
<id>snapshots</id>
|
||||
<name>Maven Central Development Repository</name>
|
||||
<url>http://snapshots.maven.codehaus.org/maven2</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
<id>snapshots</id>
|
||||
<name>Maven Central Plugins Development Repository</name>
|
||||
<url>http://snapshots.maven.codehaus.org/maven2</url>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-container-default</artifactId>
|
||||
<version>1.0-alpha-8</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-utils</artifactId>
|
||||
<version>1.0.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.wagon</groupId>
|
||||
<artifactId>wagon-provider-api</artifactId>
|
||||
<version>1.0-alpha-5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.wagon</groupId>
|
||||
<artifactId>wagon-ssh</artifactId>
|
||||
<version>1.0-alpha-5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.wagon</groupId>
|
||||
<artifactId>wagon-file</artifactId>
|
||||
<version>1.0-alpha-5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.wagon</groupId>
|
||||
<artifactId>wagon-http-lightweight</artifactId>
|
||||
<version>1.0-alpha-5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>repo1</id>
|
||||
<name>Maven Central Repository</name>
|
||||
<url>scp://repo1.maven.org/home/projects/maven/repository-staging/to-ibiblio/maven2</url>
|
||||
</repository>
|
||||
<snapshotRepository>
|
||||
<id>snapshots</id>
|
||||
<name>Maven Central Development Repository</name>
|
||||
<url>scp://repo1.maven.org/home/projects/maven/repository-staging/snapshots/maven2</url>
|
||||
</snapshotRepository>
|
||||
<site>
|
||||
<id>website</id>
|
||||
<url>scp://minotaur.apache.org/www/maven.apache.org/maven2/</url>
|
||||
</site>
|
||||
</distributionManagement>
|
||||
</project>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023224342</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023224813</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023224421</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023224444</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023232454</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>clean</prefix>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>deploy</prefix>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>install</prefix>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>jar</prefix>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>surefire</prefix>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>compiler</prefix>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>resources</prefix>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<prefix>plugin</prefix>
|
||||
<artifactId>maven-plugin-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-plugin-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-plugin-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023225046</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023224958</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>Maven Integration Test Plugin</name>
|
||||
<description>
|
||||
A test plugin to assist testing of Maven core.
|
||||
</description>
|
||||
<inceptionYear>2009</inceptionYear>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>maven-core-it</id>
|
||||
<url>file:///${basedir}/repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<updateReleaseInfo>true</updateReleaseInfo>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>pom.xml</include>
|
||||
<include>src/**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>0.1</version>
|
||||
<versioning>
|
||||
<latest>0.1</latest>
|
||||
<release>0.1</release>
|
||||
<versions>
|
||||
<version>0.1</version>
|
||||
</versions>
|
||||
<lastUpdated>20091023225125</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
Binary file not shown.
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><project>
|
||||
<parent>
|
||||
<artifactId>plexus</artifactId>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<version>1.0.4</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>plexus-utils</artifactId>
|
||||
<name>Plexus Common Utilities</name>
|
||||
<version>1.1</version>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>
|
||||
<exclude>**/Test*.java</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<distributionManagement>
|
||||
<status>deployed</status>
|
||||
</distributionManagement>
|
||||
</project>
|
|
@ -34,6 +34,7 @@ import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
|||
import org.apache.maven.execution.DefaultMavenExecutionResult;
|
||||
import org.apache.maven.execution.MavenExecutionRequest;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.internal.impl.DefaultRepositoryFactory;
|
||||
import org.apache.maven.internal.impl.DefaultSession;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.apache.maven.model.Build;
|
||||
|
@ -52,6 +53,9 @@ import org.codehaus.plexus.PlexusContainer;
|
|||
import org.codehaus.plexus.testing.PlexusTest;
|
||||
import org.codehaus.plexus.util.FileUtils;
|
||||
import org.eclipse.aether.DefaultRepositorySystemSession;
|
||||
import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
|
||||
import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
|
||||
import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
|
||||
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
|
||||
import org.eclipse.aether.repository.LocalRepository;
|
||||
|
||||
|
@ -128,8 +132,14 @@ public abstract class AbstractCoreMavenComponentTestCase {
|
|||
|
||||
MavenSession session = new MavenSession(
|
||||
getContainer(), configuration.getRepositorySession(), request, new DefaultMavenExecutionResult());
|
||||
DefaultSession iSession =
|
||||
new DefaultSession(session, mock(org.eclipse.aether.RepositorySystem.class), null, null, null, null);
|
||||
DefaultSession iSession = new DefaultSession(
|
||||
session,
|
||||
mock(org.eclipse.aether.RepositorySystem.class),
|
||||
null,
|
||||
null,
|
||||
new SimpleLookup(List.of(new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
|
||||
new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
|
||||
null);
|
||||
InternalSession.associate(session.getRepositorySession(), iSession);
|
||||
session.setSession(iSession);
|
||||
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.apache.maven.api.services.Lookup;
|
||||
import org.apache.maven.api.services.LookupException;
|
||||
|
||||
public class SimpleLookup implements Lookup {
|
||||
private final List<Object> objects;
|
||||
|
||||
public SimpleLookup(List<Object> objects) {
|
||||
this.objects = objects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T lookup(Class<T> type) {
|
||||
return objects.stream()
|
||||
.filter(type::isInstance)
|
||||
.map(type::cast)
|
||||
.findAny()
|
||||
.orElseThrow(() -> new LookupException("No service of type " + type));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T lookup(Class<T> type, String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Optional<T> lookupOptional(Class<T> type) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Optional<T> lookupOptional(Class<T> type, String name) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> lookupList(Class<T> type) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Map<String, T> lookupMap(Class<T> type) {
|
||||
return Map.of();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven.project;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelResolver;
|
||||
|
||||
@Named
|
||||
@Singleton
|
||||
@Deprecated
|
||||
public class TestModelResolver extends DefaultModelResolver {}
|
|
@ -24,6 +24,7 @@ import java.io.File;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.SimpleLookup;
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.artifact.metadata.SwitchableMetadataSource;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
|
@ -33,6 +34,7 @@ import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
|
|||
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionResult;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.internal.impl.DefaultRepositoryFactory;
|
||||
import org.apache.maven.internal.impl.DefaultSession;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.apache.maven.model.Dependency;
|
||||
|
@ -45,6 +47,9 @@ import org.codehaus.plexus.PlexusContainer;
|
|||
import org.codehaus.plexus.component.composition.CycleDetectedInComponentGraphException;
|
||||
import org.codehaus.plexus.testing.PlexusTest;
|
||||
import org.eclipse.aether.DefaultRepositorySystemSession;
|
||||
import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
|
||||
import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
|
||||
import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
|
||||
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
|
||||
import org.eclipse.aether.repository.LocalRepository;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
|
@ -122,7 +127,14 @@ class LegacyRepositorySystemTest {
|
|||
MavenSession mavenSession =
|
||||
new MavenSession(container, session, mavenExecutionRequest, new DefaultMavenExecutionResult());
|
||||
legacySupport.setSession(mavenSession);
|
||||
InternalSession iSession = new DefaultSession(mavenSession, null, null, null, null, null);
|
||||
InternalSession iSession = new DefaultSession(
|
||||
mavenSession,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
new SimpleLookup(List.of(new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
|
||||
new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
|
||||
null);
|
||||
InternalSession.associate(session, iSession);
|
||||
|
||||
ArtifactResolutionResult result = repositorySystem.resolve(request);
|
||||
|
|
|
@ -26,6 +26,7 @@ import java.nio.file.Path;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.maven.api.model.Dependency;
|
||||
|
@ -39,6 +40,7 @@ import org.apache.maven.api.services.ModelBuilderException;
|
|||
import org.apache.maven.api.services.ModelBuilderRequest;
|
||||
import org.apache.maven.api.services.ModelBuilderResult;
|
||||
import org.apache.maven.api.services.ModelProblemCollector;
|
||||
import org.apache.maven.api.services.ModelResolver;
|
||||
import org.apache.maven.api.services.ModelSource;
|
||||
import org.apache.maven.api.services.ModelTransformer;
|
||||
import org.apache.maven.api.services.SuperPomProvider;
|
||||
|
@ -62,12 +64,14 @@ import org.apache.maven.internal.impl.InternalSession;
|
|||
import org.apache.maven.internal.impl.model.DefaultModelBuilder;
|
||||
import org.apache.maven.internal.impl.model.DefaultProfileSelector;
|
||||
import org.apache.maven.internal.impl.model.ProfileActivationFilePathInterpolator;
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelResolver;
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelCache;
|
||||
import org.apache.maven.model.v4.MavenModelVersion;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.eclipse.aether.RepositorySystem;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.impl.RemoteRepositoryManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@Named
|
||||
class DefaultConsumerPomBuilder implements ConsumerPomBuilder {
|
||||
|
@ -133,6 +137,11 @@ class DefaultConsumerPomBuilder implements ConsumerPomBuilder {
|
|||
@Inject
|
||||
private ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator;
|
||||
|
||||
@Inject
|
||||
private ModelResolver modelResolver;
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
@Override
|
||||
public Model build(RepositorySystemSession session, MavenProject project, Path src) throws ModelBuilderException {
|
||||
Model model = project.getModel().getDelegate();
|
||||
|
@ -184,21 +193,32 @@ class DefaultConsumerPomBuilder implements ConsumerPomBuilder {
|
|||
dependencyManagementImporter,
|
||||
lifecycleBindingsInjector,
|
||||
pluginConfigurationExpander,
|
||||
profileActivationFilePathInterpolator,
|
||||
null,
|
||||
modelTransformer,
|
||||
versionParser,
|
||||
remoteRepositoryManager);
|
||||
versionParser);
|
||||
ModelBuilderRequest.ModelBuilderRequestBuilder request = ModelBuilderRequest.builder();
|
||||
request.projectBuild(true);
|
||||
request.session(InternalSession.from(session));
|
||||
request.source(ModelSource.fromPath(src));
|
||||
request.validationLevel(ModelBuilderRequest.VALIDATION_LEVEL_MINIMAL);
|
||||
request.locationTracking(false);
|
||||
request.modelResolver(
|
||||
new DefaultModelResolver(remoteRepositoryManager, project.getRemoteProjectRepositories()));
|
||||
request.modelResolver(modelResolver);
|
||||
request.transformerContextBuilder(modelBuilder.newTransformerContextBuilder());
|
||||
request.systemProperties(session.getSystemProperties());
|
||||
request.userProperties(session.getUserProperties());
|
||||
request.modelCache(DefaultModelCache.newInstance(session, false));
|
||||
if (session.getCache() != null) {
|
||||
Map<?, ?> map = (Map) session.getCache().get(session, DefaultModelCache.class.getName());
|
||||
List<String> paths = map.keySet().stream()
|
||||
.map(Object::toString)
|
||||
.filter(s -> s.startsWith("SourceCacheKey"))
|
||||
.map(s -> s.substring("SourceCacheKey[location=".length(), s.indexOf(", tag")))
|
||||
.sorted()
|
||||
.distinct()
|
||||
.toList();
|
||||
logger.info("ModelCache contains " + paths.size());
|
||||
paths.forEach(s -> logger.info(" " + s));
|
||||
}
|
||||
return modelBuilder.build(request.build());
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import java.util.*;
|
|||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
@ -41,11 +42,11 @@ import org.apache.maven.RepositoryUtils;
|
|||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.feature.Features;
|
||||
import org.apache.maven.api.model.*;
|
||||
import org.apache.maven.api.services.MavenException;
|
||||
import org.apache.maven.api.services.ModelBuilder;
|
||||
import org.apache.maven.api.services.ModelBuilderException;
|
||||
import org.apache.maven.api.services.ModelBuilderRequest;
|
||||
import org.apache.maven.api.services.ModelBuilderResult;
|
||||
import org.apache.maven.api.services.ModelCache;
|
||||
import org.apache.maven.api.services.ModelProblem;
|
||||
import org.apache.maven.api.services.ModelResolver;
|
||||
import org.apache.maven.api.services.ModelResolverException;
|
||||
|
@ -61,6 +62,8 @@ import org.apache.maven.artifact.InvalidRepositoryException;
|
|||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.bridge.MavenRepositorySystem;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelCache;
|
||||
import org.apache.maven.internal.impl.resolver.DefaultModelRepositoryHolder;
|
||||
import org.apache.maven.model.building.ArtifactModelSource;
|
||||
import org.apache.maven.model.building.DefaultModelProblem;
|
||||
import org.apache.maven.model.building.FileModelSource;
|
||||
|
@ -143,7 +146,7 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
}
|
||||
|
||||
@Deprecated
|
||||
private ModelSource toSource(org.apache.maven.model.building.ModelSource modelSource) {
|
||||
static ModelSource toSource(org.apache.maven.model.building.ModelSource modelSource) {
|
||||
if (modelSource instanceof FileModelSource fms) {
|
||||
return ModelSource.fromPath(fms.getPath());
|
||||
} else if (modelSource instanceof ArtifactModelSource ams) {
|
||||
|
@ -277,6 +280,7 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
private final ConcurrentMap<String, Object> parentCache;
|
||||
private final ModelTransformerContextBuilder transformerContextBuilder;
|
||||
private final ExecutorService executor;
|
||||
private final ModelCache modelCache;
|
||||
|
||||
BuildSession(ProjectBuildingRequest request, boolean localProjects) {
|
||||
this.request = request;
|
||||
|
@ -293,6 +297,7 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
this.transformerContextBuilder = null;
|
||||
}
|
||||
this.parentCache = new ConcurrentHashMap<>();
|
||||
this.modelCache = DefaultModelCache.newInstance(session, true);
|
||||
}
|
||||
|
||||
ExecutorService createExecutor(int parallelism) {
|
||||
|
@ -368,6 +373,7 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
ModelBuilderRequest.ModelBuilderRequestBuilder builder = getModelBuildingRequest();
|
||||
ModelBuilderRequest request = builder.projectBuild(modelPool != null)
|
||||
.source(modelSource)
|
||||
.projectBuild(true)
|
||||
.locationTracking(true)
|
||||
.listener(listener)
|
||||
.build();
|
||||
|
@ -1001,18 +1007,26 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
|
||||
RequestTrace trace = RequestTrace.newChild(null, request).newChild(modelBuildingRequest);
|
||||
|
||||
ProjectModelResolver pmr = new ProjectModelResolver(
|
||||
session,
|
||||
trace,
|
||||
repoSystem,
|
||||
repositoryManager,
|
||||
repositories,
|
||||
request.getRepositoryMerging(),
|
||||
modelPool,
|
||||
parentCache);
|
||||
ModelResolver resolver = new ModelResolverWrapper(pmr);
|
||||
ModelResolver resolver = new ModelResolverWrapper() {
|
||||
@Override
|
||||
protected org.apache.maven.model.resolution.ModelResolver getResolver(
|
||||
List<RemoteRepository> repositories) {
|
||||
return new ProjectModelResolver(
|
||||
session,
|
||||
trace,
|
||||
repoSystem,
|
||||
repositoryManager,
|
||||
repositories,
|
||||
request.getRepositoryMerging(),
|
||||
modelPool,
|
||||
parentCache);
|
||||
}
|
||||
};
|
||||
|
||||
modelBuildingRequest.session(InternalSession.from(session));
|
||||
InternalSession internalSession = InternalSession.from(session);
|
||||
modelBuildingRequest.session(internalSession.withRemoteRepositories(request.getRemoteRepositories().stream()
|
||||
.map(r -> internalSession.getRemoteRepository(RepositoryUtils.toRepo(r)))
|
||||
.toList()));
|
||||
modelBuildingRequest.validationLevel(request.getValidationLevel());
|
||||
modelBuildingRequest.processPlugins(request.isProcessPlugins());
|
||||
modelBuildingRequest.profiles(
|
||||
|
@ -1027,6 +1041,14 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
modelBuildingRequest.userProperties(toMap(request.getUserProperties()));
|
||||
// bv4: modelBuildingRequest.setBuildStartTime(request.getBuildStartTime());
|
||||
modelBuildingRequest.modelResolver(resolver);
|
||||
modelBuildingRequest.modelRepositoryHolder(new DefaultModelRepositoryHolder(
|
||||
internalSession,
|
||||
DefaultModelRepositoryHolder.RepositoryMerging.valueOf(
|
||||
request.getRepositoryMerging().name()),
|
||||
repositories.stream()
|
||||
.map(internalSession::getRemoteRepository)
|
||||
.toList()));
|
||||
modelBuildingRequest.modelCache(modelCache);
|
||||
modelBuildingRequest.transformerContextBuilder(transformerContextBuilder);
|
||||
/* TODO: bv4
|
||||
InternalMavenSession session =
|
||||
|
@ -1185,18 +1207,29 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
protected class ModelResolverWrapper implements ModelResolver {
|
||||
protected final org.apache.maven.model.resolution.ModelResolver resolver;
|
||||
protected abstract class ModelResolverWrapper implements ModelResolver {
|
||||
|
||||
protected ModelResolverWrapper(org.apache.maven.model.resolution.ModelResolver resolver) {
|
||||
this.resolver = resolver;
|
||||
}
|
||||
protected abstract org.apache.maven.model.resolution.ModelResolver getResolver(
|
||||
List<RemoteRepository> repositories);
|
||||
|
||||
@Override
|
||||
public ModelSource resolveModel(Session session, String groupId, String artifactId, String version)
|
||||
public ModelSource resolveModel(
|
||||
Session session, String groupId, String artifactId, String version, Consumer<String> resolved)
|
||||
throws ModelResolverException {
|
||||
try {
|
||||
return toSource(resolver.resolveModel(groupId, artifactId, version));
|
||||
InternalSession internalSession = InternalSession.from(session);
|
||||
org.apache.maven.model.resolution.ModelResolver resolver =
|
||||
getResolver(internalSession.toRepositories(internalSession.getRemoteRepositories()));
|
||||
org.apache.maven.model.Parent p = new org.apache.maven.model.Parent(Parent.newBuilder()
|
||||
.groupId(groupId)
|
||||
.artifactId(artifactId)
|
||||
.version(version)
|
||||
.build());
|
||||
org.apache.maven.model.building.ModelSource modelSource = resolver.resolveModel(p);
|
||||
if (!p.getVersion().equals(version)) {
|
||||
resolved.accept(p.getVersion());
|
||||
}
|
||||
return toSource(modelSource);
|
||||
} catch (UnresolvableModelException e) {
|
||||
throw new ModelResolverException(e.getMessage(), e.getGroupId(), e.getArtifactId(), e.getVersion(), e);
|
||||
}
|
||||
|
@ -1207,6 +1240,9 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
throws ModelResolverException {
|
||||
try {
|
||||
org.apache.maven.model.Parent p = new org.apache.maven.model.Parent(parent);
|
||||
InternalSession internalSession = InternalSession.from(session);
|
||||
org.apache.maven.model.resolution.ModelResolver resolver =
|
||||
getResolver(internalSession.toRepositories(internalSession.getRemoteRepositories()));
|
||||
ModelSource source = toSource(resolver.resolveModel(p));
|
||||
if (p.getDelegate() != parent) {
|
||||
modified.set(p.getDelegate());
|
||||
|
@ -1222,6 +1258,9 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
throws ModelResolverException {
|
||||
try {
|
||||
org.apache.maven.model.Dependency d = new org.apache.maven.model.Dependency(dependency);
|
||||
InternalSession internalSession = InternalSession.from(session);
|
||||
org.apache.maven.model.resolution.ModelResolver resolver =
|
||||
getResolver(internalSession.toRepositories(internalSession.getRemoteRepositories()));
|
||||
ModelSource source = toSource(resolver.resolveModel(d));
|
||||
if (d.getDelegate() != dependency) {
|
||||
modified.set(d.getDelegate());
|
||||
|
@ -1231,25 +1270,5 @@ public class DefaultProjectBuilder implements ProjectBuilder {
|
|||
throw new ModelResolverException(e.getMessage(), e.getGroupId(), e.getArtifactId(), e.getVersion(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRepository(Session session, Repository repository) throws ModelResolverException {
|
||||
addRepository(session, repository, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRepository(Session session, Repository repository, boolean replace)
|
||||
throws ModelResolverException {
|
||||
try {
|
||||
resolver.addRepository(new org.apache.maven.model.Repository(repository), replace);
|
||||
} catch (org.apache.maven.model.resolution.InvalidRepositoryException e) {
|
||||
throw new MavenException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelResolver newCopy() {
|
||||
return new ModelResolverWrapper(resolver.newCopy());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,55 +15,56 @@ org.apache.maven.internal.impl.DefaultDependencyCollector
|
|||
org.apache.maven.internal.impl.DefaultDependencyCoordinateFactory
|
||||
org.apache.maven.internal.impl.DefaultLocalRepositoryManager
|
||||
org.apache.maven.internal.impl.DefaultMessageBuilderFactory
|
||||
org.apache.maven.internal.impl.DefaultModelUrlNormalizer
|
||||
org.apache.maven.internal.impl.DefaultModelVersionParser
|
||||
org.apache.maven.internal.impl.DefaultModelXmlFactory
|
||||
org.apache.maven.internal.impl.DefaultPluginConfigurationExpander
|
||||
org.apache.maven.internal.impl.DefaultRepositoryFactory
|
||||
org.apache.maven.internal.impl.DefaultSettingsBuilder
|
||||
org.apache.maven.internal.impl.DefaultSettingsXmlFactory
|
||||
org.apache.maven.internal.impl.DefaultSuperPomProvider
|
||||
org.apache.maven.internal.impl.DefaultToolchainsBuilder
|
||||
org.apache.maven.internal.impl.DefaultToolchainsXmlFactory
|
||||
org.apache.maven.internal.impl.DefaultTransportProvider
|
||||
org.apache.maven.internal.impl.DefaultUrlNormalizer
|
||||
org.apache.maven.internal.impl.DefaultVersionParser
|
||||
org.apache.maven.internal.impl.DefaultVersionRangeResolver
|
||||
org.apache.maven.internal.impl.DefaultVersionResolver
|
||||
org.apache.maven.internal.impl.DefaultModelVersionParser
|
||||
org.apache.maven.internal.impl.DefaultUrlNormalizer
|
||||
org.apache.maven.internal.impl.DefaultModelUrlNormalizer
|
||||
org.apache.maven.internal.impl.DefaultSuperPomProvider
|
||||
org.apache.maven.internal.impl.DefaultPluginConfigurationExpander
|
||||
org.apache.maven.internal.impl.ExtensibleEnumRegistries$DefaultLanguageRegistry
|
||||
org.apache.maven.internal.impl.ExtensibleEnumRegistries$DefaultPathScopeRegistry
|
||||
org.apache.maven.internal.impl.ExtensibleEnumRegistries$DefaultProjectScopeRegistry
|
||||
org.apache.maven.internal.impl.model.BuildModelTransformer
|
||||
org.apache.maven.internal.impl.model.DefaultDependencyManagementImporter
|
||||
org.apache.maven.internal.impl.model.DefaultDependencyManagementInjector
|
||||
org.apache.maven.internal.impl.model.DefaultInheritanceAssembler
|
||||
org.apache.maven.internal.impl.model.DefaultLifecycleBindingsInjector
|
||||
org.apache.maven.internal.impl.model.DefaultModelBuilder
|
||||
org.apache.maven.internal.impl.model.DefaultModelInterpolator
|
||||
org.apache.maven.internal.impl.model.DefaultModelNormalizer
|
||||
org.apache.maven.internal.impl.model.DefaultModelPathTranslator
|
||||
org.apache.maven.internal.impl.model.DefaultModelProcessor
|
||||
org.apache.maven.internal.impl.model.DefaultModelValidator
|
||||
org.apache.maven.internal.impl.model.DefaultModelVersionProcessor
|
||||
org.apache.maven.internal.impl.model.DefaultModelNormalizer
|
||||
org.apache.maven.internal.impl.model.DefaultModelInterpolator
|
||||
org.apache.maven.internal.impl.model.DefaultPathTranslator
|
||||
org.apache.maven.internal.impl.model.DefaultRootLocator
|
||||
org.apache.maven.internal.impl.model.DefaultModelPathTranslator
|
||||
org.apache.maven.internal.impl.model.DefaultInheritanceAssembler
|
||||
org.apache.maven.internal.impl.model.DefaultProfileSelector
|
||||
org.apache.maven.internal.impl.model.DefaultProfileInjector
|
||||
org.apache.maven.internal.impl.model.DefaultPluginManagementInjector
|
||||
org.apache.maven.internal.impl.model.DefaultDependencyManagementInjector
|
||||
org.apache.maven.internal.impl.model.DefaultDependencyManagementImporter
|
||||
org.apache.maven.internal.impl.model.DefaultLifecycleBindingsInjector
|
||||
org.apache.maven.internal.impl.model.DefaultProfileInjector
|
||||
org.apache.maven.internal.impl.model.DefaultProfileSelector
|
||||
org.apache.maven.internal.impl.model.DefaultRootLocator
|
||||
org.apache.maven.internal.impl.model.ProfileActivationFilePathInterpolator
|
||||
org.apache.maven.internal.impl.model.BuildModelTransformer
|
||||
org.apache.maven.internal.impl.model.profile.FileProfileActivator
|
||||
org.apache.maven.internal.impl.model.profile.JdkVersionProfileActivator
|
||||
org.apache.maven.internal.impl.model.profile.OperatingSystemProfileActivator
|
||||
org.apache.maven.internal.impl.model.profile.PackagingProfileActivator
|
||||
org.apache.maven.internal.impl.model.profile.PropertyProfileActivator
|
||||
org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader
|
||||
org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader
|
||||
org.apache.maven.internal.impl.resolver.DefaultModelResolver
|
||||
org.apache.maven.internal.impl.resolver.DefaultVersionRangeResolver
|
||||
org.apache.maven.internal.impl.resolver.DefaultVersionResolver
|
||||
org.apache.maven.internal.impl.resolver.MavenVersionScheme
|
||||
org.apache.maven.internal.impl.resolver.PluginsMetadataGeneratorFactory
|
||||
org.apache.maven.internal.impl.resolver.SnapshotMetadataGeneratorFactory
|
||||
org.apache.maven.internal.impl.resolver.VersionsMetadataGeneratorFactory
|
||||
org.apache.maven.internal.impl.resolver.DefaultVersionResolver
|
||||
org.apache.maven.internal.impl.resolver.DefaultVersionRangeResolver
|
||||
org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader
|
||||
org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader
|
||||
org.apache.maven.internal.impl.resolver.MavenVersionScheme
|
||||
org.apache.maven.internal.impl.resolver.relocation.DistributionManagementArtifactRelocationSource
|
||||
org.apache.maven.internal.impl.resolver.relocation.UserPropertiesArtifactRelocationSource
|
||||
org.apache.maven.internal.impl.resolver.type.DefaultTypeProvider
|
||||
org.apache.maven.internal.impl.resolver.type.DefaultTypeProvider
|
||||
|
|
|
@ -18,20 +18,33 @@
|
|||
*/
|
||||
package org.apache.maven;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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.internal.impl.DefaultRepositoryFactory;
|
||||
import org.apache.maven.internal.impl.DefaultSession;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.eclipse.aether.DefaultRepositorySystemSession;
|
||||
import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
|
||||
import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
|
||||
import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
|
||||
|
||||
public class MavenTestHelper {
|
||||
public static DefaultRepositorySystemSession createSession(MavenRepositorySystem repositorySystem) {
|
||||
DefaultRepositorySystemSession repoSession = new DefaultRepositorySystemSession(h -> false);
|
||||
DefaultMavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
MavenSession mavenSession = new MavenSession(repoSession, request, new DefaultMavenExecutionResult());
|
||||
DefaultSession session = new DefaultSession(mavenSession, null, null, repositorySystem, null, null);
|
||||
DefaultSession session = new DefaultSession(
|
||||
mavenSession,
|
||||
null,
|
||||
null,
|
||||
repositorySystem,
|
||||
new SimpleLookup(List.of(new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
|
||||
new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
|
||||
null);
|
||||
InternalSession.associate(repoSession, session);
|
||||
return repoSession;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.apache.maven.api.services.Lookup;
|
||||
import org.apache.maven.api.services.LookupException;
|
||||
|
||||
public class SimpleLookup implements Lookup {
|
||||
private final List<Object> objects;
|
||||
|
||||
public SimpleLookup(List<Object> objects) {
|
||||
this.objects = objects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T lookup(Class<T> type) {
|
||||
return objects.stream()
|
||||
.filter(type::isInstance)
|
||||
.map(type::cast)
|
||||
.findAny()
|
||||
.orElseThrow(() -> new LookupException("No service of type " + type));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T lookup(Class<T> type, String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Optional<T> lookupOptional(Class<T> type) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Optional<T> lookupOptional(Class<T> type, String name) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> lookupList(Class<T> type) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Map<String, T> lookupMap(Class<T> type) {
|
||||
return Map.of();
|
||||
}
|
||||
}
|
|
@ -21,10 +21,13 @@ package org.apache.maven.internal.transformation;
|
|||
import javax.inject.Inject;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.SimpleLookup;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionResult;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.internal.impl.DefaultRepositoryFactory;
|
||||
import org.apache.maven.internal.impl.DefaultSession;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.codehaus.plexus.PlexusContainer;
|
||||
|
@ -33,6 +36,9 @@ import org.eclipse.aether.DefaultRepositorySystemSession;
|
|||
import org.eclipse.aether.RepositoryListener;
|
||||
import org.eclipse.aether.RepositorySystem;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
|
||||
import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
|
||||
import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
|
||||
import org.eclipse.aether.repository.LocalRepository;
|
||||
import org.eclipse.aether.repository.RemoteRepository;
|
||||
import org.eclipse.aether.transfer.TransferListener;
|
||||
|
@ -71,7 +77,14 @@ public abstract class AbstractRepositoryTestCase {
|
|||
|
||||
DefaultMavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
MavenSession mavenSession = new MavenSession(rsession, request, new DefaultMavenExecutionResult());
|
||||
DefaultSession session = new DefaultSession(mavenSession, null, null, null, null, null);
|
||||
DefaultSession session = new DefaultSession(
|
||||
mavenSession,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
new SimpleLookup(List.of(new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
|
||||
new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
|
||||
null);
|
||||
InternalSession.associate(rsession, session);
|
||||
|
||||
return rsession;
|
||||
|
|
|
@ -18,15 +18,23 @@
|
|||
*/
|
||||
package org.apache.maven.internal.transformation.impl;
|
||||
|
||||
import javax.annotation.Priority;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Collections;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.apache.maven.api.Session;
|
||||
import org.apache.maven.api.model.Model;
|
||||
import org.apache.maven.api.services.ModelResolver;
|
||||
import org.apache.maven.api.services.ModelResolverException;
|
||||
import org.apache.maven.api.services.ModelSource;
|
||||
import org.apache.maven.artifact.repository.MavenArtifactRepository;
|
||||
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
|
||||
import org.apache.maven.internal.impl.InternalMavenSession;
|
||||
|
@ -86,4 +94,24 @@ public class ConsumerPomBuilderTest extends AbstractRepositoryTestCase {
|
|||
assertNotNull(model);
|
||||
assertTrue(model.getProfiles().isEmpty());
|
||||
}
|
||||
|
||||
@Named
|
||||
@Singleton
|
||||
@Priority(10)
|
||||
public static class MyModelResolver implements ModelResolver {
|
||||
@Override
|
||||
public ModelSource resolveModel(
|
||||
Session session, String groupId, String artifactId, String version, Consumer<String> resolvedVersion)
|
||||
throws ModelResolverException {
|
||||
String id = groupId + ":" + artifactId + ":" + version;
|
||||
if (id.startsWith("org.sonatype.mavenbook.multi:parent:")) {
|
||||
return ModelSource.fromPath(Paths.get("src/test/resources/consumer/simple/pom.xml"));
|
||||
} else if (id.startsWith("org.sonatype.mavenbook.multi:simple-parent:")) {
|
||||
return ModelSource.fromPath(Paths.get("src/test/resources/consumer/simple/simple-parent/pom.xml"));
|
||||
} else if (id.startsWith("org.my.group:parent:")) {
|
||||
return ModelSource.fromPath(Paths.get("src/test/resources/consumer/trivial/pom.xml"));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,11 +24,13 @@ import java.io.File;
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.SimpleLookup;
|
||||
import org.apache.maven.bridge.MavenRepositorySystem;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionResult;
|
||||
import org.apache.maven.execution.MavenExecutionRequest;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.internal.impl.DefaultRepositoryFactory;
|
||||
import org.apache.maven.internal.impl.DefaultSession;
|
||||
import org.apache.maven.internal.impl.InternalSession;
|
||||
import org.apache.maven.project.DefaultProjectBuildingRequest;
|
||||
|
@ -38,6 +40,9 @@ import org.apache.maven.resolver.RepositorySystemSessionFactory;
|
|||
import org.codehaus.plexus.testing.PlexusTest;
|
||||
import org.eclipse.aether.RepositorySystem;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
|
||||
import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
|
||||
import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
@ -68,8 +73,14 @@ public class ModelBuilderTest {
|
|||
.build();
|
||||
request.setRepositorySession(rsession);
|
||||
MavenSession msession = new MavenSession(rsession, mavenRequest, new DefaultMavenExecutionResult());
|
||||
InternalSession session =
|
||||
new DefaultSession(msession, repositorySystem, null, mavenRepositorySystem, null, null);
|
||||
InternalSession session = new DefaultSession(
|
||||
msession,
|
||||
repositorySystem,
|
||||
null,
|
||||
mavenRepositorySystem,
|
||||
new SimpleLookup(List.of(new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
|
||||
new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
|
||||
null);
|
||||
InternalSession.associate(rsession, session);
|
||||
|
||||
List<ProjectBuildingResult> results = projectBuilder.build(
|
||||
|
|
|
@ -71,6 +71,9 @@ 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.internal.impl.DefaultChecksumPolicyProvider;
|
||||
import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
|
||||
import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
|
||||
import org.eclipse.aether.repository.RemoteRepository;
|
||||
import org.eclipse.aether.repository.WorkspaceReader;
|
||||
import org.eclipse.aether.resolution.ArtifactResult;
|
||||
|
@ -264,7 +267,8 @@ public class BootstrapCoreExtensionManager {
|
|||
} else if (clazz == ArtifactManager.class) {
|
||||
return (T) new DefaultArtifactManager(this);
|
||||
} else if (clazz == RepositoryFactory.class) {
|
||||
return (T) new DefaultRepositoryFactory();
|
||||
return (T) new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
|
||||
new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider()));
|
||||
// } else if (clazz == ModelResolver.class) {
|
||||
// return (T) new DefaultModelResolver();
|
||||
}
|
||||
|
|
|
@ -1061,8 +1061,7 @@ public class MavenRepositorySystemSupplier implements Supplier<RepositorySystem>
|
|||
new DefaultPluginConfigurationExpander(),
|
||||
new ProfileActivationFilePathInterpolator(new DefaultPathTranslator(), new DefaultRootLocator()),
|
||||
new BuildModelTransformer(),
|
||||
new DefaultModelVersionParser(getVersionScheme()),
|
||||
getRemoteRepositoryManager());
|
||||
new DefaultModelVersionParser(getVersionScheme()));
|
||||
}
|
||||
|
||||
private RepositorySystem repositorySystem;
|
||||
|
|
Loading…
Reference in New Issue