Author: jdcasey
Date: Tue Nov 27 09:59:22 2007
New Revision: 598720

URL: http://svn.apache.org/viewvc?rev=598720&view=rev
Log:
Wiring plugin-as-extension back into the new extension scanning stuff.

Modified:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
    
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
 Tue Nov 27 09:59:22 2007
@@ -25,6 +25,7 @@
 import org.apache.maven.model.Extension;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.loader.PluginLoader;
 import org.apache.maven.profiles.ProfileManager;
 import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
@@ -273,6 +274,9 @@
     private void checkModelBuildForExtensions( Model model, 
MavenExecutionRequest request, List remoteRepositories )
         throws ExtensionScanningException
     {
+        // FIXME: Fix the log level here.
+        getLogger().info( "Checking " + model.getId() + " for extensions." );
+
         Build build = model.getBuild();
 
         if ( build != null )
@@ -300,6 +304,31 @@
                     {
                         throw new ExtensionScanningException( "Cannot resolve 
pre-scanned extension artifact: "
                             + extension.getGroupId() + ":" + 
extension.getArtifactId() + ": " + e.getMessage(), model, extension, e );
+                    }
+                }
+            }
+
+            List plugins = build.getPlugins();
+
+            if ( ( plugins != null ) && !plugins.isEmpty() )
+            {
+                for ( Iterator extensionIterator = plugins.iterator(); 
extensionIterator.hasNext(); )
+                {
+                    Plugin plugin = (Plugin) extensionIterator.next();
+
+                    if ( plugin.isExtensions() )
+                    {
+                        getLogger().debug( "Adding plugin: " + plugin.getKey() 
+ " as an extension(from model: " + model.getId() + ")" );
+
+                        try
+                        {
+                            extensionManager.addPluginAsExtension( plugin, 
model, remoteRepositories, request );
+                        }
+                        catch ( ExtensionManagerException e )
+                        {
+                            throw new ExtensionScanningException( "Cannot 
resolve pre-scanned plugin artifact (for use as an extension): "
+                                + plugin.getKey() + ": " + e.getMessage(), 
model, plugin, e );
+                        }
                     }
                 }
             }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 Tue Nov 27 09:59:22 2007
@@ -63,6 +63,7 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -160,6 +161,8 @@
                               MavenExecutionRequest request )
         throws ExtensionManagerException
     {
+        getLogger().debug( "Adding plugin: " + plugin.getKey() + " as an 
extension." );
+
         Parent originatingParent = originatingModel.getParent();
 
         String groupId = originatingModel.getGroupId();
@@ -178,9 +181,17 @@
             version = originatingParent.getVersion();
         }
 
+        String pluginVersion = plugin.getVersion();
+
+        // TODO: Forbid this?
+        if ( pluginVersion == null )
+        {
+            pluginVersion = Artifact.RELEASE_VERSION;
+        }
+
         Artifact pluginArtifact = artifactFactory.createBuildArtifact( 
plugin.getGroupId(),
                                                                        
plugin.getArtifactId(),
-                                                                       
plugin.getVersion(), "maven-plugin" );
+                                                                       
pluginVersion, "maven-plugin" );
 
         getLogger().debug( "Starting extension-addition process for: " + 
pluginArtifact );
 
@@ -195,6 +206,10 @@
              && coreFilter.include( pluginArtifact ) )
         {
             MavenProject dummyProject = new MavenProject( originatingModel );
+
+            dummyProject.setPluginArtifactRepositories( remoteRepositories );
+            dummyProject.setRemoteArtifactRepositories( Collections.EMPTY_LIST 
);
+
             EventDispatcher dispatcher = new DefaultEventDispatcher( 
request.getEventMonitors() );
             MavenSession session = new MavenSession( container, request, 
dispatcher, null );
 

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
 Tue Nov 27 09:59:22 2007
@@ -22,6 +22,7 @@
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.model.Extension;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.project.MavenProject;
 
 import java.util.List;
@@ -34,12 +35,22 @@
  */
 public interface ExtensionManager
 {
-    void addExtension( Extension extension, MavenProject project, 
MavenExecutionRequest request )
+    void addExtension( Extension extension,
+                       MavenProject project,
+                       MavenExecutionRequest request )
         throws ExtensionManagerException;
 
     void registerWagons();
 
-    void addExtension( Extension extension, Model originatingModel, List 
remoteRepositories,
+    void addExtension( Extension extension,
+                       Model originatingModel,
+                       List remoteRepositories,
                        MavenExecutionRequest request )
+        throws ExtensionManagerException;
+
+    void addPluginAsExtension( Plugin plugin,
+                               Model originatingModel,
+                               List remoteRepositories,
+                               MavenExecutionRequest request )
         throws ExtensionManagerException;
 }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
 Tue Nov 27 09:59:22 2007
@@ -2,6 +2,7 @@
 
 import org.apache.maven.model.Extension;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
 
@@ -76,6 +77,16 @@
     {
         super( message, cause );
         this.pomFile = pomFile;
+    }
+
+    public ExtensionScanningException( String message,
+                                       Model model,
+                                       Plugin plugin,
+                                       ExtensionManagerException cause )
+    {
+        super( message, cause );
+        modelId = model.getId();
+        extensionId = plugin.getGroupId() + ":" + plugin.getArtifactId();
     }
 
     public File getPomFile()

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Tue Nov 27 09:59:22 2007
@@ -162,15 +162,20 @@
         ArtifactNotFoundException, InvalidPluginException,
         PluginManagerException, PluginNotFoundException, 
PluginVersionNotFoundException
     {
+        String pluginVersion = plugin.getVersion();
+
         // TODO: this should be possibly outside
         // All version-resolution logic has been moved to 
DefaultPluginVersionManager.
-        if ( plugin.getVersion() == null )
+        getLogger().debug( "Resolving plugin: " + plugin.getKey() + " with 
version: " + pluginVersion );
+        if ( ( pluginVersion == null ) || Artifact.LATEST_VERSION.equals( 
pluginVersion ) || Artifact.RELEASE_VERSION.equals( pluginVersion ) )
         {
             getLogger().debug( "Resolving version for plugin: " + 
plugin.getKey() );
-            String version = pluginVersionManager.resolvePluginVersion( 
plugin.getGroupId(),
+            pluginVersion = pluginVersionManager.resolvePluginVersion( 
plugin.getGroupId(),
                                                                         
plugin.getArtifactId(),
                                                                         
project, session );
-            plugin.setVersion( version );
+            plugin.setVersion( pluginVersion );
+
+            getLogger().debug( "Resolved to version: " + pluginVersion );
         }
 
         return verifyVersionedPlugin( plugin, project, session );
@@ -379,8 +384,14 @@
 
             if ( pluginDescriptor == null )
             {
+                if ( ( pluginRealm != null ) && getLogger().isDebugEnabled() )
+                {
+                    getLogger().debug( "Plugin Realm: " );
+                    pluginRealm.display();
+                }
+
                 throw new IllegalStateException( "The PluginDescriptor for the 
plugin "
-                                                 + projectPlugin.getKey() + " 
was not found" );
+                                                 + projectPlugin.getKey() + " 
was not found. Should have been in realm: " + pluginRealm );
             }
 
             pluginDescriptor.setPluginArtifact( pluginArtifact );

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
 Tue Nov 27 09:59:22 2007
@@ -41,10 +41,8 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
 
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 public class DefaultPluginVersionManager
     extends AbstractLogEnabled
@@ -85,6 +83,7 @@
     {
         // first pass...if the plugin is specified in the pom, try to retrieve 
the version from there.
         String version = getVersionFromPluginConfig( groupId, artifactId, 
project, resolveAsReportPlugin );
+
         getLogger().debug( "Version from POM: " + version );
 
         // NOTE: We CANNOT check the current project version here, so delay it 
until later.
@@ -107,7 +106,7 @@
 
         // third pass...we're always checking for latest install/deploy, so 
retrieve the version for LATEST metadata and
         // also set that resolved version as the <useVersion/> in settings.xml.
-        if ( StringUtils.isEmpty( version ) )
+        if ( StringUtils.isEmpty( version ) || Artifact.LATEST_VERSION.equals( 
version ) )
         {
             // 1. resolve the version to be used
             version = resolveMetaVersion( groupId, artifactId, project, 
localRepository, Artifact.LATEST_VERSION );
@@ -116,7 +115,7 @@
 
         // final pass...retrieve the version for RELEASE and also set that 
resolved version as the <useVersion/>
         // in settings.xml.
-        if ( StringUtils.isEmpty( version ) )
+        if ( StringUtils.isEmpty( version ) || 
Artifact.RELEASE_VERSION.equals( version ) )
         {
             // 1. resolve the version to be used
             version = resolveMetaVersion( groupId, artifactId, project, 
localRepository, Artifact.RELEASE_VERSION );
@@ -143,7 +142,7 @@
         {
             if ( project.getReportPlugins() != null )
             {
-                for ( Iterator it = project.getReportPlugins().iterator(); 
it.hasNext() && version == null; )
+                for ( Iterator it = project.getReportPlugins().iterator(); 
it.hasNext() && ( version == null ); )
                 {
                     ReportPlugin plugin = (ReportPlugin) it.next();
 
@@ -158,7 +157,7 @@
         {
             if ( project.getBuildPlugins() != null )
             {
-                for ( Iterator it = project.getBuildPlugins().iterator(); 
it.hasNext() && version == null; )
+                for ( Iterator it = project.getBuildPlugins().iterator(); 
it.hasNext() && ( version == null ); )
                 {
                     Plugin plugin = (Plugin) it.next();
 
@@ -208,14 +207,14 @@
         {
             boolean pluginValid = false;
 
-            while ( !pluginValid && artifactVersion != null )
+            while ( !pluginValid && ( artifactVersion != null ) )
             {
                 pluginValid = true;
                 MavenProject pluginProject;
                 try
                 {
                     artifact = artifactFactory.createProjectArtifact( groupId, 
artifactId, artifactVersion );
-                    
+
                     pluginProject = mavenProjectBuilder.buildFromRepository( 
artifact, project.getPluginArtifactRepositories(), localRepository );
                 }
                 catch ( ProjectBuildingException e )
@@ -225,7 +224,7 @@
                 }
 
                 // if we don't have the required Maven version, then ignore an 
update
-                if ( pluginProject.getPrerequisites() != null && 
pluginProject.getPrerequisites().getMaven() != null )
+                if ( ( pluginProject.getPrerequisites() != null ) && ( 
pluginProject.getPrerequisites().getMaven() != null ) )
                 {
                     DefaultArtifactVersion requiredVersion =
                         new DefaultArtifactVersion( 
pluginProject.getPrerequisites().getMaven() );

Modified: 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
 Tue Nov 27 09:59:22 2007
@@ -249,6 +249,9 @@
       
<implementation>org.apache.maven.extension.DefaultExtensionManager</implementation>
       <requirements>
         <requirement>
+          <role>org.apache.maven.plugin.PluginManager</role>
+        </requirement>
+        <requirement>
           <role>org.apache.maven.ArtifactFilterManager</role>
         </requirement>
         <requirement>


Reply via email to