Package org.apache.maven.plugin.internal
Class DefaultMavenPluginManager
- java.lang.Object
-
- org.apache.maven.plugin.internal.DefaultMavenPluginManager
-
- All Implemented Interfaces:
MavenPluginManager
@Component(role=MavenPluginManager.class) public class DefaultMavenPluginManager extends java.lang.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 Summary
Fields Modifier and Type Field Description static java.lang.StringKEY_EXTENSIONS_REALMSPluginId => ExtensionRealmCache.CacheRecord map MavenProject context value key.
-
Constructor Summary
Constructors Constructor Description DefaultMavenPluginManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckPrerequisites(org.apache.maven.plugin.descriptor.PluginDescriptor pluginDescriptor)Verifies that the specified plugin's prerequisites are met.<T> TgetConfiguredMojo(java.lang.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.org.apache.maven.plugin.descriptor.MojoDescriptorgetMojoDescriptor(org.apache.maven.model.Plugin plugin, java.lang.String goal, java.util.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.org.apache.maven.plugin.descriptor.PluginDescriptorgetPluginDescriptor(org.apache.maven.model.Plugin plugin, java.util.List<org.eclipse.aether.repository.RemoteRepository> repositories, org.eclipse.aether.RepositorySystemSession session)Retrieves the descriptor for the specified plugin from its main artifact.voidreleaseMojo(java.lang.Object mojo, MojoExecution mojoExecution)Releases the specified mojo back to the container.ExtensionRealmCache.CacheRecordsetupExtensionsRealm(MavenProject project, org.apache.maven.model.Plugin plugin, org.eclipse.aether.RepositorySystemSession session)Sets up class realm for the specified build extensions plugin.voidsetupPluginRealm(org.apache.maven.plugin.descriptor.PluginDescriptor pluginDescriptor, MavenSession session, java.lang.ClassLoader parent, java.util.List<java.lang.String> imports, org.eclipse.aether.graph.DependencyFilter filter)Sets up the class realm for the specified plugin.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.maven.plugin.MavenPluginManager
checkRequiredMavenVersion
-
-
-
-
Field Detail
-
KEY_EXTENSIONS_REALMS
public static final java.lang.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 notice- Since:
- 3.3.0
-
-
Method Detail
-
getPluginDescriptor
public org.apache.maven.plugin.descriptor.PluginDescriptor getPluginDescriptor(org.apache.maven.model.Plugin plugin, java.util.List<org.eclipse.aether.repository.RemoteRepository> repositories, org.eclipse.aether.RepositorySystemSession session) throws PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorExceptionDescription copied from interface:MavenPluginManagerRetrieves the descriptor for the specified plugin from its main artifact.- Specified by:
getPluginDescriptorin interfaceMavenPluginManager- Parameters:
plugin- The plugin whose descriptor should be retrieved, must not benull.repositories- The plugin repositories to use for resolving the plugin's main artifact, must not benull.session- The repository session to use for resolving the plugin's main artifact, must not benull.- Returns:
- The plugin descriptor, never
null. - Throws:
PluginResolutionExceptionPluginDescriptorParsingExceptionInvalidPluginDescriptorException
-
getMojoDescriptor
public org.apache.maven.plugin.descriptor.MojoDescriptor getMojoDescriptor(org.apache.maven.model.Plugin plugin, java.lang.String goal, java.util.List<org.eclipse.aether.repository.RemoteRepository> repositories, org.eclipse.aether.RepositorySystemSession session) throws org.apache.maven.plugin.MojoNotFoundException, PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorExceptionDescription copied from interface:MavenPluginManagerRetrieves the descriptor for the specified plugin goal from the plugin's main artifact.- Specified by:
getMojoDescriptorin interfaceMavenPluginManager- Parameters:
plugin- The plugin whose mojo descriptor should be retrieved, must not benull.goal- The simple name of the mojo whose descriptor should be retrieved, must not benull.repositories- The plugin repositories to use for resolving the plugin's main artifact, must not benull.session- The repository session to use for resolving the plugin's main artifact, must not benull.- Returns:
- The mojo descriptor, never
null. - Throws:
org.apache.maven.plugin.MojoNotFoundExceptionPluginResolutionExceptionPluginDescriptorParsingExceptionInvalidPluginDescriptorException
-
checkPrerequisites
public void checkPrerequisites(org.apache.maven.plugin.descriptor.PluginDescriptor pluginDescriptor) throws PluginIncompatibleExceptionDescription copied from interface:MavenPluginManagerVerifies that the specified plugin's prerequisites are met.- Specified by:
checkPrerequisitesin interfaceMavenPluginManager- Parameters:
pluginDescriptor- The descriptor of the plugin to check, must not benull.- Throws:
PluginIncompatibleException
-
setupPluginRealm
public void setupPluginRealm(org.apache.maven.plugin.descriptor.PluginDescriptor pluginDescriptor, MavenSession session, java.lang.ClassLoader parent, java.util.List<java.lang.String> imports, org.eclipse.aether.graph.DependencyFilter filter) throws PluginResolutionException, PluginContainerExceptionDescription 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 interfaceMavenPluginManager- Parameters:
pluginDescriptor- The plugin descriptor in which to save the class realm and the plugin artifacts, must not benull.session- The build session from which to pick the current project and repository settings, must not benull.parent- The parent class realm for the plugin, may benullto use the Maven core realm.imports- The packages/types to import from the parent realm, may benull.filter- The filter used to exclude certain plugin dependencies, may benull.- Throws:
PluginResolutionExceptionPluginContainerException
-
getConfiguredMojo
public <T> T getConfiguredMojo(java.lang.Class<T> mojoInterface, MavenSession session, MojoExecution mojoExecution) throws PluginConfigurationException, PluginContainerExceptionDescription 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 lookup 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 interfaceMavenPluginManager- Parameters:
mojoInterface- The component role of the mojo, must not benull.session- The build session in whose context the mojo will be used, must not benull.mojoExecution- The mojo execution to retrieve the mojo for, must not benull.- Returns:
- The ready-to-execute mojo, never
null. - Throws:
PluginConfigurationExceptionPluginContainerException
-
releaseMojo
public void releaseMojo(java.lang.Object mojo, MojoExecution mojoExecution)Description copied from interface:MavenPluginManagerReleases the specified mojo back to the container.- Specified by:
releaseMojoin interfaceMavenPluginManager- Parameters:
mojo- The mojo to release, may benull.mojoExecution- The mojo execution the mojo was originally retrieved for, must not benull.
-
setupExtensionsRealm
public ExtensionRealmCache.CacheRecord setupExtensionsRealm(MavenProject project, org.apache.maven.model.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 interfaceMavenPluginManager- Throws:
PluginManagerException
-
-