Package org.apache.maven.plugin.internal
Class DefaultMavenPluginManager
java.lang.Object
org.apache.maven.plugin.internal.DefaultMavenPluginManager
- All Implemented Interfaces:
- MavenPluginManager
@Named
@Singleton
public class DefaultMavenPluginManager
extends Object
implements MavenPluginManager
Provides basic services to manage Maven plugins and their mojos. This component is kept general in its design such
 that the plugins/mojos can be used in arbitrary contexts. In particular, the mojos can be used for ordinary build
 plugins as well as special purpose plugins like reports.
- Since:
- 3.0
- Author:
- Benjamin Bentmann
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final StringPluginId => ExtensionRealmCache.CacheRecord map MavenProject context value key.
- 
Constructor SummaryConstructorsConstructorDescriptionDefaultMavenPluginManager(org.codehaus.plexus.PlexusContainer container, ClassRealmManager classRealmManager, PluginDescriptorCache pluginDescriptorCache, PluginRealmCache pluginRealmCache, PluginDependenciesResolver pluginDependenciesResolver, RuntimeInformation runtimeInformation, ExtensionRealmCache extensionRealmCache, PluginVersionResolver pluginVersionResolver, PluginArtifactsCache pluginArtifactsCache, org.apache.maven.plugin.internal.MavenPluginValidator pluginValidator, List<org.apache.maven.plugin.internal.MavenPluginConfigurationValidator> configurationValidators, PluginValidationManager pluginValidationManager, List<MavenPluginPrerequisitesChecker> prerequisitesCheckers) 
- 
Method SummaryModifier and TypeMethodDescriptionvoidcheckPrerequisites(PluginDescriptor pluginDescriptor) Verifies that the specified plugin's prerequisites are met.voidcheckRequiredMavenVersion(PluginDescriptor pluginDescriptor) Deprecated.<T> TgetConfiguredMojo(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.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.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.voidreleaseMojo(Object mojo, MojoExecution mojoExecution) Releases the specified mojo back to the container.setupExtensionsRealm(MavenProject project, Plugin plugin, org.eclipse.aether.RepositorySystemSession session) Sets up class realm for the specified build extensions plugin.voidsetupPluginRealm(PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent, List<String> imports, org.eclipse.aether.graph.DependencyFilter filter) Sets up the class realm for the specified plugin.
- 
Field Details- 
KEY_EXTENSIONS_REALMSPluginId => 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 notice- Since:
- 3.3.0
 
 
- 
- 
Constructor Details- 
DefaultMavenPluginManager@Inject public DefaultMavenPluginManager(org.codehaus.plexus.PlexusContainer container, ClassRealmManager classRealmManager, PluginDescriptorCache pluginDescriptorCache, PluginRealmCache pluginRealmCache, PluginDependenciesResolver pluginDependenciesResolver, RuntimeInformation runtimeInformation, ExtensionRealmCache extensionRealmCache, PluginVersionResolver pluginVersionResolver, PluginArtifactsCache pluginArtifactsCache, org.apache.maven.plugin.internal.MavenPluginValidator pluginValidator, List<org.apache.maven.plugin.internal.MavenPluginConfigurationValidator> configurationValidators, PluginValidationManager pluginValidationManager, List<MavenPluginPrerequisitesChecker> prerequisitesCheckers) 
 
- 
- 
Method Details- 
getPluginDescriptorpublic PluginDescriptor getPluginDescriptor(Plugin plugin, List<org.eclipse.aether.repository.RemoteRepository> repositories, org.eclipse.aether.RepositorySystemSession session) throws PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException Description copied from interface:MavenPluginManagerRetrieves the descriptor for the specified plugin from its main artifact.- Specified by:
- getPluginDescriptorin interface- MavenPluginManager
- Parameters:
- 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.
- Returns:
- The plugin descriptor, never null.
- Throws:
- PluginResolutionException
- PluginDescriptorParsingException
- InvalidPluginDescriptorException
 
- 
getMojoDescriptorpublic MojoDescriptor getMojoDescriptor(Plugin plugin, String goal, List<org.eclipse.aether.repository.RemoteRepository> repositories, org.eclipse.aether.RepositorySystemSession session) throws MojoNotFoundException, PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException Description copied from interface:MavenPluginManagerRetrieves the descriptor for the specified plugin goal from the plugin's main artifact.- Specified by:
- getMojoDescriptorin interface- MavenPluginManager
- Parameters:
- 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.
- Returns:
- The mojo descriptor, never null.
- Throws:
- MojoNotFoundException
- PluginResolutionException
- PluginDescriptorParsingException
- InvalidPluginDescriptorException
 
- 
checkPrerequisitespublic void checkPrerequisites(PluginDescriptor pluginDescriptor) throws PluginIncompatibleException Description copied from interface:MavenPluginManagerVerifies that the specified plugin's prerequisites are met.- Specified by:
- checkPrerequisitesin interface- MavenPluginManager
- Parameters:
- pluginDescriptor- The descriptor of the plugin to check, must not be- null.
- Throws:
- PluginIncompatibleException
 
- 
checkRequiredMavenVersion@Deprecated public void checkRequiredMavenVersion(PluginDescriptor pluginDescriptor) throws PluginIncompatibleException Deprecated.Description copied from interface:MavenPluginManagerVerifies the specified plugin is compatible with the current Maven runtime.- Specified by:
- checkRequiredMavenVersionin interface- MavenPluginManager
- Parameters:
- pluginDescriptor- The descriptor of the plugin to check, must not be- null.
- Throws:
- PluginIncompatibleException
 
- 
setupPluginRealmpublic void setupPluginRealm(PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent, List<String> imports, org.eclipse.aether.graph.DependencyFilter filter) throws PluginResolutionException, PluginContainerException Description copied from interface:MavenPluginManagerSets up the class realm for the specified plugin. Both the class realm and the plugin artifacts that constitute it will be stored in the plugin descriptor.- Specified by:
- setupPluginRealmin interface- MavenPluginManager
- Parameters:
- 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- nullto 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.
- Throws:
- PluginResolutionException
- PluginContainerException
 
- 
getConfiguredMojopublic <T> T getConfiguredMojo(Class<T> mojoInterface, MavenSession session, MojoExecution mojoExecution) throws PluginConfigurationException, PluginContainerException Description copied from interface:MavenPluginManagerLooks up the mojo for the specified mojo execution and populates its parameters from the configuration given by the mojo execution. The mojo/plugin descriptor associated with the mojo execution provides the class realm to look up the mojo from. Warning: The returned mojo instance must be released viaMavenPluginManager.releaseMojo(Object, MojoExecution)when the mojo is no longer needed to free any resources allocated for it.- Specified by:
- getConfiguredMojoin interface- MavenPluginManager
- Parameters:
- 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.
- Returns:
- The ready-to-execute mojo, never null.
- Throws:
- PluginConfigurationException
- PluginContainerException
 
- 
releaseMojoDescription copied from interface:MavenPluginManagerReleases the specified mojo back to the container.- Specified by:
- releaseMojoin interface- MavenPluginManager
- Parameters:
- mojo- The mojo to release, may be- null.
- mojoExecution- The mojo execution the mojo was originally retrieved for, must not be- null.
 
- 
setupExtensionsRealmpublic ExtensionRealmCache.CacheRecord setupExtensionsRealm(MavenProject project, Plugin plugin, org.eclipse.aether.RepositorySystemSession session) throws PluginManagerException Description copied from interface:MavenPluginManagerSets up class realm for the specified build extensions plugin.- Specified by:
- setupExtensionsRealmin interface- MavenPluginManager
- Throws:
- PluginManagerException
 
 
-