Package org.apache.maven.project
Class ProjectModelResolver
java.lang.Object
org.apache.maven.project.ProjectModelResolver
- All Implemented Interfaces:
ModelResolver
A model resolver to assist building of projects. This resolver gives priority to those repositories that have been
declared in the POM.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final record
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final String
private final List
<org.eclipse.aether.repository.RemoteRepository> private static final int
private final ReactorModelPool
private final Map
<String, Future<ProjectModelResolver.Result>> private List
<org.eclipse.aether.repository.RemoteRepository> private final org.eclipse.aether.impl.RemoteRepositoryManager
private List
<org.eclipse.aether.repository.RemoteRepository> private final ProjectBuildingRequest.RepositoryMerging
private final org.eclipse.aether.RepositorySystem
private final org.eclipse.aether.RepositorySystemSession
private final org.eclipse.aether.RequestTrace
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
ProjectModelResolver
(ProjectModelResolver original) ProjectModelResolver
(org.eclipse.aether.RepositorySystemSession session, org.eclipse.aether.RequestTrace trace, org.eclipse.aether.RepositorySystem resolver, org.eclipse.aether.impl.RemoteRepositoryManager remoteRepositoryManager, List<org.eclipse.aether.repository.RemoteRepository> repositories, ProjectBuildingRequest.RepositoryMerging repositoryMerging, ReactorModelPool modelPool, Map<String, Object> parentCache) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addRepository
(Repository repository) void
addRepository
(Repository repository, boolean replace) void
addRepository
(Repository repository) Adds a repository to use for subsequent resolution requests.void
addRepository
(Repository repository, boolean replace) Adds a repository to use for subsequent resolution requests.private ModelSource
doResolveModel
(Parent parent, AtomicReference<Parent> modified) newCopy()
Clones this resolver for usage in a forked resolution process.private static void
removeMatchingRepository
(Iterable<org.eclipse.aether.repository.RemoteRepository> repositories, String id) resolveModel
(String groupId, String artifactId, String version) Tries to resolve the POM for the specified coordinates.resolveModel
(Dependency dependency, AtomicReference<Dependency> modified) resolveModel
(Parent parent, AtomicReference<Parent> modified) resolveModel
(Dependency dependency) Tries to resolve the POM for the specified dependency coordinates possibly updatingdependency
.resolveModel
(Parent parent) Tries to resolve the POM for the specified parent coordinates possibly updatingparent
.(package private) static <T extends Throwable>
void
-
Field Details
-
MAX_CAP
private static final int MAX_CAP- See Also:
-
session
private final org.eclipse.aether.RepositorySystemSession session -
trace
private final org.eclipse.aether.RequestTrace trace -
context
- See Also:
-
repositories
-
pomRepositories
-
externalRepositories
-
resolver
private final org.eclipse.aether.RepositorySystem resolver -
remoteRepositoryManager
private final org.eclipse.aether.impl.RemoteRepositoryManager remoteRepositoryManager -
repositoryIds
-
modelPool
-
repositoryMerging
-
parentCache
-
-
Constructor Details
-
ProjectModelResolver
public ProjectModelResolver(org.eclipse.aether.RepositorySystemSession session, org.eclipse.aether.RequestTrace trace, org.eclipse.aether.RepositorySystem resolver, org.eclipse.aether.impl.RemoteRepositoryManager remoteRepositoryManager, List<org.eclipse.aether.repository.RemoteRepository> repositories, ProjectBuildingRequest.RepositoryMerging repositoryMerging, ReactorModelPool modelPool, Map<String, Object> parentCache) -
ProjectModelResolver
-
-
Method Details
-
addRepository
- Specified by:
addRepository
in interfaceModelResolver
- Throws:
InvalidRepositoryException
-
addRepository
- Specified by:
addRepository
in interfaceModelResolver
- Throws:
InvalidRepositoryException
-
removeMatchingRepository
-
newCopy
Description copied from interface:ModelResolver
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 ofModelResolver.addRepository(Repository)
on the clone do not affect the state of the original resolver and vice versa.- Specified by:
newCopy
in interfaceModelResolver
- Returns:
- The cloned resolver, never
null
.
-
resolveModel
public ModelSource resolveModel(String groupId, String artifactId, String version) throws UnresolvableModelException Description copied from interface:ModelResolver
Tries to resolve the POM for the specified coordinates.- Specified by:
resolveModel
in interfaceModelResolver
- Parameters:
groupId
- The group identifier of the POM, must not benull
.artifactId
- The artifact identifier of the POM, must not benull
.version
- The version of the POM, must not benull
.- Returns:
- The source of the requested POM, never
null
. - Throws:
UnresolvableModelException
- If the POM could not be resolved from any configured repository.
-
resolveModel
public ModelSource resolveModel(Parent parent, AtomicReference<Parent> modified) throws UnresolvableModelException - Specified by:
resolveModel
in interfaceModelResolver
- Throws:
UnresolvableModelException
-
uncheckedThrow
- Throws:
T
-
doResolveModel
private ModelSource doResolveModel(Parent parent, AtomicReference<Parent> modified) throws UnresolvableModelException - Throws:
UnresolvableModelException
-
resolveModel
public ModelSource resolveModel(Dependency dependency, AtomicReference<Dependency> modified) throws UnresolvableModelException - Specified by:
resolveModel
in interfaceModelResolver
- Throws:
UnresolvableModelException
-
resolveModel
Description copied from interface:ModelResolver
Tries to resolve the POM for the specified parent coordinates possibly updatingparent
.Unlike the
ModelResolver.resolveModel(java.lang.String, java.lang.String, java.lang.String)
method, this method supports version ranges and updates the givenparent
instance to match the returnedModelSource
. Ifparent
declares a version range, the version corresponding to the returnedModelSource
will be set on the givenparent
.- Specified by:
resolveModel
in interfaceModelResolver
- Parameters:
parent
- The parent coordinates to resolve, must not benull
.- Returns:
- The source of the requested POM, never
null
. - Throws:
UnresolvableModelException
- If the POM could not be resolved from any configured repository.- See Also:
-
resolveModel
Description copied from interface:ModelResolver
Tries to resolve the POM for the specified dependency coordinates possibly updatingdependency
.Unlike the
ModelResolver.resolveModel(java.lang.String, java.lang.String, java.lang.String)
method, this method supports version ranges and updates the givendependency
instance to match the returnedModelSource
. Ifdependency
declares a version range, the version corresponding to the returnedModelSource
will be set on the givendependency
.- Specified by:
resolveModel
in interfaceModelResolver
- Parameters:
dependency
- The dependency coordinates to resolve, must not benull
.- Returns:
- The source of the requested POM, never
null
. - Throws:
UnresolvableModelException
- If the POM could not be resolved from any configured repository.- See Also:
-
addRepository
Description copied from interface:ModelResolver
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.- Specified by:
addRepository
in interfaceModelResolver
- Parameters:
repository
- The repository to add to the internal search chain, must not benull
.- Throws:
InvalidRepositoryException
- If the repository could not be added (e.g. due to invalid URL or layout).
-
addRepository
Description copied from interface:ModelResolver
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.- Specified by:
addRepository
in interfaceModelResolver
- Parameters:
repository
- The repository to add to the internal search chain, must not benull
.- Throws:
InvalidRepositoryException
- If the repository could not be added (e.g. due to invalid URL or layout).
-