You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2009/08/01 00:19:38 UTC
svn commit: r799758 - in
/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven:
lifecycle/DefaultLifecycleExecutor.java plugin/DefaultPluginManager.java
plugin/PluginManager.java
Author: jdcasey
Date: Fri Jul 31 22:19:38 2009
New Revision: 799758
URL: http://svn.apache.org/viewvc?rev=799758&view=rev
Log:
[MNG-4270] completely load any plugin used for extensions, so plugin dependencies can supply artifact handlers and lifecycle mappings, in addition to the plugin artifact itself.
Modified:
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
Modified: maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=799758&r1=799757&r2=799758&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Fri Jul 31 22:19:38 2009
@@ -220,7 +220,7 @@
{
try
{
- handlers.putAll( findArtifactTypeHandlersInPlugins( project, session.getSettings(), session.getLocalRepository() ) );
+ handlers.putAll( findArtifactTypeHandlersInPlugins( project, session ) );
// shudder...
for ( ArtifactHandler handler : handlers.values() )
@@ -1135,8 +1135,7 @@
Plugin plugin = new Plugin();
plugin.setGroupId( groupId );
plugin.setArtifactId( artifactId );
- lifecyclePluginDescriptor = verifyPlugin( plugin, project, session.getSettings(),
- session.getLocalRepository() );
+ lifecyclePluginDescriptor = verifyPlugin( plugin, project, session );
if ( lifecyclePluginDescriptor == null )
{
throw new LifecycleExecutionException(
@@ -1345,8 +1344,7 @@
String packaging = project.getPackaging();
Map mappings = null;
- LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging,
- session.getSettings(), session.getLocalRepository() );
+ LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging, session );
if ( m != null )
{
mappings = m.getPhases( lifecycle.getId() );
@@ -1393,8 +1391,7 @@
String packaging = project.getPackaging();
List optionalMojos = null;
- LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging, session
- .getSettings(), session.getLocalRepository() );
+ LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging, session );
if ( m != null )
{
@@ -1423,8 +1420,7 @@
return optionalMojos;
}
- private Object findExtension( MavenProject project, String role, String roleHint, Settings settings,
- ArtifactRepository localRepository )
+ private Object findExtension( MavenProject project, String role, String roleHint, MavenSession session )
throws LifecycleExecutionException, PluginNotFoundException
{
Object pluginComponent = null;
@@ -1435,7 +1431,7 @@
if ( plugin.isExtensions() )
{
- verifyPlugin( plugin, project, settings, localRepository );
+ loadPluginFully( plugin, project, session );
// TODO: if moved to the plugin manager we already have the descriptor from above and so do can lookup the container directly
try
@@ -1460,8 +1456,7 @@
* @todo Not particularly happy about this. Would like WagonManager and ArtifactTypeHandlerManager to be able to
* lookup directly, or have them passed in
*/
- private Map<String, ArtifactHandler> findArtifactTypeHandlersInPlugins( MavenProject project, Settings settings,
- ArtifactRepository localRepository )
+ private Map<String, ArtifactHandler> findArtifactTypeHandlersInPlugins( MavenProject project, MavenSession session )
throws LifecycleExecutionException, PluginNotFoundException
{
Map<String, ArtifactHandler> map = new HashMap<String, ArtifactHandler>();
@@ -1471,7 +1466,7 @@
if ( plugin.isExtensions() )
{
- verifyPlugin( plugin, project, settings, localRepository );
+ verifyPlugin( plugin, project, session );
// TODO: if moved to the plugin manager we already have the descriptor from above and so do can lookup the container directly
try
@@ -1507,7 +1502,7 @@
Settings settings = session.getSettings();
PluginDescriptor pluginDescriptor =
- verifyPlugin( plugin, project, session.getSettings(), session.getLocalRepository() );
+ verifyPlugin( plugin, project, session );
if ( pluginDescriptor.getMojos() != null && !pluginDescriptor.getMojos().isEmpty() )
{
@@ -1535,8 +1530,7 @@
}
}
- private PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings,
- ArtifactRepository localRepository )
+ private PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, MavenSession session )
throws LifecycleExecutionException, PluginNotFoundException
{
PluginDescriptor pluginDescriptor;
@@ -1544,7 +1538,49 @@
{
// TODO: MNG-4081...need to flush this plugin once we look at it, to avoid using an external
// version of a plugin when a newer version will be created in the current reactor...
- pluginDescriptor = pluginManager.verifyPlugin( plugin, project, settings, localRepository );
+ pluginDescriptor = pluginManager.loadPluginDescriptor( plugin, project, session );
+ }
+ catch ( PluginManagerException e )
+ {
+ throw new LifecycleExecutionException(
+ "Internal error in the plugin manager getting plugin '" + plugin.getKey() + "': " + e.getMessage(), e );
+ }
+ catch ( PluginVersionResolutionException e )
+ {
+ throw new LifecycleExecutionException( e.getMessage(), e );
+ }
+ catch ( InvalidVersionSpecificationException e )
+ {
+ throw new LifecycleExecutionException( e.getMessage(), e );
+ }
+ catch ( InvalidPluginException e )
+ {
+ throw new LifecycleExecutionException( e.getMessage(), e );
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new LifecycleExecutionException( e.getMessage(), e );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new LifecycleExecutionException( e.getMessage(), e );
+ }
+ catch ( PluginVersionNotFoundException e )
+ {
+ throw new LifecycleExecutionException( e.getMessage(), e );
+ }
+ return pluginDescriptor;
+ }
+
+ private PluginDescriptor loadPluginFully( Plugin plugin, MavenProject project, MavenSession session )
+ throws LifecycleExecutionException, PluginNotFoundException
+ {
+ PluginDescriptor pluginDescriptor;
+ try
+ {
+ // TODO: MNG-4081...need to flush this plugin once we look at it, to avoid using an external
+ // version of a plugin when a newer version will be created in the current reactor...
+ pluginDescriptor = pluginManager.loadPluginFully( plugin, project, session );
}
catch ( PluginManagerException e )
{
@@ -1750,7 +1786,7 @@
Plugin buildPlugin = (Plugin) i.next();
PluginDescriptor desc =
- verifyPlugin( buildPlugin, project, session.getSettings(), session.getLocalRepository() );
+ verifyPlugin( buildPlugin, project, session );
if ( prefix.equals( desc.getGoalPrefix() ) )
{
plugin = buildPlugin;
@@ -1813,7 +1849,7 @@
if ( pluginDescriptor == null )
{
- pluginDescriptor = verifyPlugin( plugin, project, session.getSettings(), session.getLocalRepository() );
+ pluginDescriptor = verifyPlugin( plugin, project, session );
}
// this has been simplified from the old code that injected the plugin management stuff, since
Modified: maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=799758&r1=799757&r2=799758&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Fri Jul 31 22:19:38 2009
@@ -161,6 +161,9 @@
session.getLocalRepository() );
}
+ /**
+ * {@inheritDoc}
+ */
public PluginDescriptor verifyPlugin( Plugin plugin,
MavenProject project,
Settings settings,
@@ -1588,7 +1591,7 @@
PluginDescriptor pluginDescriptor = pluginCollector.getPluginDescriptor( plugin );
PlexusContainer pluginContainer = getPluginContainer( pluginDescriptor );
-
+
return pluginContainer.lookup( role, roleHint );
}
@@ -1611,4 +1614,31 @@
return components;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public PluginDescriptor loadPluginFully( Plugin plugin, MavenProject project, MavenSession session )
+ throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException,
+ InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
+ PluginVersionNotFoundException
+ {
+ PluginDescriptor pd = verifyPlugin( plugin, project, session.getSettings(), session.getLocalRepository() );
+
+ PlexusContainer pluginContainer = getPluginContainer( pd );
+ ensurePluginContainerIsComplete( pd, pluginContainer, project, session );
+
+ return pd;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public PluginDescriptor loadPluginDescriptor( Plugin plugin, MavenProject project, MavenSession session )
+ throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException,
+ InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
+ PluginVersionNotFoundException
+ {
+ return verifyPlugin( plugin, project, session.getSettings(), session.getLocalRepository() );
+ }
}
Modified: maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=799758&r1=799757&r2=799758&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Fri Jul 31 22:19:38 2009
@@ -57,6 +57,9 @@
Plugin getPluginDefinitionForPrefix( String prefix, MavenSession session, MavenProject project );
+ /**
+ * @deprecated Use {@link PluginManager#loadPluginDescriptor(Plugin, MavenProject, MavenSession)} instead.
+ */
PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings,
ArtifactRepository localRepository )
throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException,
@@ -73,5 +76,21 @@
Map getPluginComponents( Plugin plugin, String role )
throws ComponentLookupException, PluginManagerException;
+
+ /**
+ * @since 2.2.1
+ */
+ PluginDescriptor loadPluginDescriptor( Plugin plugin, MavenProject project, MavenSession session )
+ throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException,
+ InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
+ PluginVersionNotFoundException;
+
+ /**
+ * @since 2.2.1
+ */
+ PluginDescriptor loadPluginFully( Plugin plugin, MavenProject project, MavenSession session )
+ throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException,
+ InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
+ PluginVersionNotFoundException;
}
\ No newline at end of file