@Component(role=MavenPluginManager.class) public class DefaultMavenPluginManager extends Object implements MavenPluginManager
Modifier and Type | Field and Description |
---|---|
static String |
KEY_EXTENSIONS_REALMS
PluginId => ExtensionRealmCache.CacheRecord map MavenProject context value key.
|
Constructor and Description |
---|
DefaultMavenPluginManager() |
Modifier and Type | Method and Description |
---|---|
void |
checkRequiredMavenVersion(PluginDescriptor pluginDescriptor)
Verifies the specified plugin is compatible with the current Maven runtime.
|
<T> T |
getConfiguredMojo(Class<T> mojoInterface,
MavenSession session,
MojoExecution mojoExecution)
Looks up the mojo for the specified mojo execution and populates its parameters from the configuration given by
the mojo execution.
|
MojoDescriptor |
getMojoDescriptor(Plugin plugin,
String goal,
List<org.eclipse.aether.repository.RemoteRepository> repositories,
org.eclipse.aether.RepositorySystemSession session)
Retrieves the descriptor for the specified plugin goal from the plugin's main artifact.
|
PluginDescriptor |
getPluginDescriptor(Plugin plugin,
List<org.eclipse.aether.repository.RemoteRepository> repositories,
org.eclipse.aether.RepositorySystemSession session)
Retrieves the descriptor for the specified plugin from its main artifact.
|
void |
releaseMojo(Object mojo,
MojoExecution mojoExecution)
Releases the specified mojo back to the container.
|
ExtensionRealmCache.CacheRecord |
setupExtensionsRealm(MavenProject project,
Plugin plugin,
org.eclipse.aether.RepositorySystemSession session)
Sets up class realm for the specified build extensions plugin.
|
void |
setupPluginRealm(PluginDescriptor pluginDescriptor,
MavenSession session,
ClassLoader parent,
List<String> imports,
org.eclipse.aether.graph.DependencyFilter filter)
Sets up the class realm for the specified plugin.
|
public static final String KEY_EXTENSIONS_REALMS
PluginId => ExtensionRealmCache.CacheRecord map MavenProject context value key. The map is used to ensure the same class realm is used to load build extensions and load mojos for extensions=true plugins.
Note: This is part of internal implementation and may be changed or removed without noticepublic PluginDescriptor getPluginDescriptor(Plugin plugin, List<org.eclipse.aether.repository.RemoteRepository> repositories, org.eclipse.aether.RepositorySystemSession session) throws PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException
MavenPluginManager
getPluginDescriptor
in interface MavenPluginManager
plugin
- The plugin whose descriptor should be retrieved, must not be null
.repositories
- The plugin repositories to use for resolving the plugin's main artifact, must not be null
.session
- The repository session to use for resolving the plugin's main artifact, must not be null
.null
.PluginResolutionException
PluginDescriptorParsingException
InvalidPluginDescriptorException
public MojoDescriptor getMojoDescriptor(Plugin plugin, String goal, List<org.eclipse.aether.repository.RemoteRepository> repositories, org.eclipse.aether.RepositorySystemSession session) throws MojoNotFoundException, PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException
MavenPluginManager
getMojoDescriptor
in interface MavenPluginManager
plugin
- The plugin whose mojo descriptor should be retrieved, must not be null
.goal
- The simple name of the mojo whose descriptor should be retrieved, must not be null
.repositories
- The plugin repositories to use for resolving the plugin's main artifact, must not be null
.session
- The repository session to use for resolving the plugin's main artifact, must not be null
.null
.MojoNotFoundException
PluginResolutionException
PluginDescriptorParsingException
InvalidPluginDescriptorException
public void checkRequiredMavenVersion(PluginDescriptor pluginDescriptor) throws PluginIncompatibleException
MavenPluginManager
checkRequiredMavenVersion
in interface MavenPluginManager
pluginDescriptor
- The descriptor of the plugin to check, must not be null
.PluginIncompatibleException
public void setupPluginRealm(PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent, List<String> imports, org.eclipse.aether.graph.DependencyFilter filter) throws PluginResolutionException, PluginContainerException
MavenPluginManager
setupPluginRealm
in interface MavenPluginManager
pluginDescriptor
- The plugin descriptor in which to save the class realm and the plugin artifacts, must not
be null
.session
- The build session from which to pick the current project and repository settings, must not be
null
.parent
- The parent class realm for the plugin, may be null
to use the Maven core realm.imports
- The packages/types to import from the parent realm, may be null
.filter
- The filter used to exclude certain plugin dependencies, may be null
.PluginResolutionException
PluginContainerException
public <T> T getConfiguredMojo(Class<T> mojoInterface, MavenSession session, MojoExecution mojoExecution) throws PluginConfigurationException, PluginContainerException
MavenPluginManager
MavenPluginManager.releaseMojo(Object, MojoExecution)
when the mojo is no longer needed to free any resources allocated for
it.getConfiguredMojo
in interface MavenPluginManager
mojoInterface
- The component role of the mojo, must not be null
.session
- The build session in whose context the mojo will be used, must not be null
.mojoExecution
- The mojo execution to retrieve the mojo for, must not be null
.null
.PluginConfigurationException
PluginContainerException
public void releaseMojo(Object mojo, MojoExecution mojoExecution)
MavenPluginManager
releaseMojo
in interface MavenPluginManager
mojo
- The mojo to release, may be null
.mojoExecution
- The mojo execution the mojo was originally retrieved for, must not be null
.public ExtensionRealmCache.CacheRecord setupExtensionsRealm(MavenProject project, Plugin plugin, org.eclipse.aether.RepositorySystemSession session) throws PluginManagerException
MavenPluginManager
setupExtensionsRealm
in interface MavenPluginManager
PluginManagerException
Copyright © 2001–2022 The Apache Software Foundation. All rights reserved.