You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/07/27 10:03:53 UTC

svn commit: r225477 - in /maven/components/trunk: maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/ maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/ maven-artifact/src/main/java/org/apache/maven/artifact/...

Author: brett
Date: Wed Jul 27 01:03:33 2005
New Revision: 225477

URL: http://svn.apache.org/viewcvs?rev=225477&view=rev
Log:
PR: MNG-598
allow type handlers to be specified by plugin extensions


Modified:
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/ArtifactHandlerManager.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java
    maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
    maven/components/trunk/maven-core-it/integration-tests.txt
    maven/components/trunk/maven-core-it/it0041/expected-results.txt
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.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/PluginManager.java
    maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java Wed Jul 27 01:03:33 2005
@@ -39,6 +39,7 @@
 
     private List artifactTransformations;
 
+    /** @deprecated we want to use the artifact method only, and ensure artifact.file is set correctly. */
     public void deploy( String basedir, String finalName, Artifact artifact, ArtifactRepository deploymentRepository,
                         ArtifactRepository localRepository )
         throws ArtifactDeploymentException

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java Wed Jul 27 01:03:33 2005
@@ -35,13 +35,12 @@
 {
     private List artifactTransformations;
 
+    /** @deprecated we want to use the artifact method only, and ensure artifact.file is set correctly. */
     public void install( String basedir, String finalName, Artifact artifact, ArtifactRepository localRepository )
         throws ArtifactInstallationException
     {
-        File source = null;
-
         String extension = artifact.getArtifactHandler().getExtension();
-        source = new File( basedir, finalName + "." + extension );
+        File source = new File( basedir, finalName + "." + extension );
 
         install( source, artifact, localRepository );
     }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/ArtifactHandlerManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/ArtifactHandlerManager.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/ArtifactHandlerManager.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/ArtifactHandlerManager.java Wed Jul 27 01:03:33 2005
@@ -18,6 +18,8 @@
 
 import org.apache.maven.artifact.handler.ArtifactHandler;
 
+import java.util.Map;
+
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @version $Id$
@@ -27,4 +29,6 @@
     String ROLE = ArtifactHandlerManager.class.getName();
 
     ArtifactHandler getArtifactHandler( String type );
+
+    void addHandlers( Map handlers );
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java Wed Jul 27 01:03:33 2005
@@ -44,6 +44,11 @@
         return handler;
     }
 
+    public void addHandlers( Map handlers )
+    {
+        artifactHandlers.putAll( handlers );
+    }
+
     public Set getHandlerTypes()
     {
         return artifactHandlers.keySet();

Modified: maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java (original)
+++ maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java Wed Jul 27 01:03:33 2005
@@ -247,6 +247,12 @@
         {
             ext = "jar";
         }
+        String classifier = null;
+        if ( "coreit-artifact".equals( a[3] ) )
+        {
+            ext = "jar";
+            classifier = "it";
+        }
 
         String repositoryPath;
         if ( "legacy".equals( localRepoLayout ) )
@@ -260,7 +266,12 @@
 //            {
             repositoryPath = repositoryPath + "/" + a[1] + "/" + a[2];
 //            }
-            repositoryPath = repositoryPath + "/" + a[1] + "-" + a[2] + "." + ext;
+            repositoryPath = repositoryPath + "/" + a[1] + "-" + a[2];
+            if ( classifier != null )
+            {
+                repositoryPath = repositoryPath + "-" + classifier;
+            }
+            repositoryPath = repositoryPath + "." + ext;
         }
         else
         {

Modified: maven/components/trunk/maven-core-it/integration-tests.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/integration-tests.txt (original)
+++ maven/components/trunk/maven-core-it/integration-tests.txt Wed Jul 27 01:03:33 2005
@@ -1,4 +1,4 @@
-#it0041
+it0041
 it0040
 it0039
 it0038

Modified: maven/components/trunk/maven-core-it/it0041/expected-results.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0041/expected-results.txt?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/it0041/expected-results.txt (original)
+++ maven/components/trunk/maven-core-it/it0041/expected-results.txt Wed Jul 27 01:03:33 2005
@@ -1 +1,2 @@
-target/maven-core-it0036-1.0.jar
+target/maven-core-it0041-1.0-SNAPSHOT.jar
+${artifact:org.apache.maven:maven-core-it-support:1.2:coreit-artifact}

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Wed Jul 27 01:03:33 2005
@@ -18,6 +18,8 @@
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.execution.MavenExecutionResponse;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.extension.ExtensionManager;
@@ -84,6 +86,8 @@
 
     private Map defaultPhases;
 
+    private ArtifactHandlerManager artifactHandlerManager;
+
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------
@@ -111,6 +115,9 @@
                 extensionManager.addExtension( extension, project, session.getLocalRepository() );
             }
 
+            Map handlers = findArtifactTypeHandlers( project, session.getSettings(), session.getLocalRepository() );
+            artifactHandlerManager.addHandlers( handlers );
+
             for ( Iterator i = tasks.iterator(); i.hasNext(); )
             {
                 String task = (String) i.next();
@@ -129,6 +136,14 @@
         {
             throw new LifecycleExecutionException( "Unable to initialise extensions", e );
         }
+        catch ( PluginManagerException e )
+        {
+            throw new LifecycleExecutionException( "Unable to initialise extensions", e );
+        }
+        catch ( PluginVersionResolutionException e )
+        {
+            throw new LifecycleExecutionException( "Unable to initialise extensions", e );
+        }
         finally
         {
             response.setFinish( new Date() );
@@ -364,6 +379,37 @@
             }
         }
         return null;
+    }
+
+    /**
+     * @todo Not particularly happy about this. Would like WagonManager and ArtifactTypeHandlerManager to be able to
+     * lookup directly, or have them passed in
+     */
+    private Map findArtifactTypeHandlers( MavenProject project, Settings settings, ArtifactRepository localRepository )
+        throws ArtifactResolutionException, PluginManagerException, PluginVersionResolutionException
+    {
+        Map map = new HashMap();
+        for ( Iterator i = project.getBuildPlugins().iterator(); i.hasNext(); )
+        {
+            Plugin plugin = (Plugin) i.next();
+
+            if ( plugin.isExtensions() )
+            {
+                pluginManager.verifyPlugin( plugin, project, settings, localRepository );
+
+                // TODO: if moved to the plugin manager we already have the descriptor from above and so do can lookup the container directly
+                try
+                {
+                    Map components = pluginManager.getPluginComponents( plugin, ArtifactHandler.ROLE );
+                    map.putAll( components );
+                }
+                catch ( ComponentLookupException e )
+                {
+                    getLogger().debug( "Unable to find the lifecycle component in the extension", e );
+                }
+            }
+        }
+        return map;
     }
 
     /**

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=225477&r1=225476&r2=225477&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 Wed Jul 27 01:03:33 2005
@@ -1049,6 +1049,14 @@
 
         // TODO: we don't need to resolve over and over again, as long as we are sure that the parameters are the same
         // check this with yourkit as a hot spot.
+        try
+        {
+            project.setDependencyArtifacts( MavenProject.createArtifacts( artifactFactory, project.getDependencies() ) );
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new ArtifactResolutionException( "Error in dependency version", e );
+        }
         ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
                                                                                 artifact, context.getLocalRepository(),
                                                                                 project.getRemoteArtifactRepositories(),
@@ -1083,6 +1091,16 @@
         PlexusContainer pluginContainer = getPluginContainer( pluginDescriptor );
 
         return pluginContainer.lookup( role, roleHint );
+    }
+
+    public Map getPluginComponents( Plugin plugin, String role )
+        throws ComponentLookupException, PluginManagerException
+    {
+        PluginDescriptor pluginDescriptor = pluginCollector.getPluginDescriptor( plugin );
+
+        PlexusContainer pluginContainer = getPluginContainer( pluginDescriptor );
+
+        return pluginContainer.lookupMap( role );
     }
 
     private PluginMappingManager getPluginMappingManager( MavenSession session, MavenProject project )

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Wed Jul 27 01:03:33 2005
@@ -29,6 +29,7 @@
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
@@ -44,11 +45,11 @@
     PluginDescriptor getPluginDescriptorForPrefix( String prefix )
         throws PluginManagerException;
 
-    Plugin getPluginDefinitionForPrefix( String prefix, MavenSession session, MavenProject project ) 
+    Plugin getPluginDefinitionForPrefix( String prefix, MavenSession session, MavenProject project )
         throws PluginManagerException;
-    
+
     PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings,
-                                  ArtifactRepository localRepository )
+                                   ArtifactRepository localRepository )
         throws ArtifactResolutionException, PluginManagerException, PluginVersionResolutionException;
 
     List getReports( ReportPlugin reportPlugin, ReportSet reportSet, MavenProject project, MavenSession session )
@@ -56,5 +57,8 @@
         ArtifactResolutionException;
 
     Object getPluginComponent( Plugin plugin, String role, String roleHint )
+        throws ComponentLookupException, PluginManagerException;
+
+    Map getPluginComponents( Plugin plugin, String role )
         throws ComponentLookupException, PluginManagerException;
 }

Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=225477&r1=225476&r2=225477&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 Wed Jul 27 01:03:33 2005
@@ -139,6 +139,9 @@
         <requirement>
           <role>org.apache.maven.plugin.mapping.MavenPluginMappingBuilder</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role>
+        </requirement>
       </requirements>
       <configuration>
         <!-- START SNIPPET: lifecyle -->

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Jul 27 01:03:33 2005
@@ -38,7 +38,6 @@
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.profiles.activation.ProfileActivationCalculator;
-import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
 import org.apache.maven.project.injection.ModelDefaultsInjector;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
@@ -149,7 +148,15 @@
         Map managedVersions = createManagedVersionMap( project.getDependencyManagement() );
         
         ensureMetadataSourceIsInitialized();
-        
+
+        try
+        {
+            project.setDependencyArtifacts( MavenProject.createArtifacts( artifactFactory, project.getDependencies() ) );
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new ProjectBuildingException( "Error in dependency version", e );
+        }
         ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
                                                                                 projectArtifact, managedVersions,
                                                                                 localRepository,
@@ -467,7 +474,6 @@
         }
 
         project.setRemoteArtifactRepositories( remoteRepositories );
-        project.setDependencyArtifacts( createArtifacts( project.getDependencies() ) );
         project.setPluginArtifacts( createPluginArtifacts( project.getBuildPlugins() ) );
 
         return project;
@@ -656,19 +662,6 @@
     private static String createCacheKey( String groupId, String artifactId, String version )
     {
         return groupId + ":" + artifactId + ":" + version;
-    }
-
-    protected Set createArtifacts( List dependencies )
-        throws ProjectBuildingException
-    {
-        try
-        {
-            return MavenMetadataSource.createArtifacts( artifactFactory, dependencies, null, null );
-        }
-        catch ( InvalidVersionSpecificationException e )
-        {
-            throw new ProjectBuildingException( "Unable to parse dependency version", e );
-        }
     }
 
     protected Set createPluginArtifacts( List plugins )

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=225477&r1=225476&r2=225477&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Wed Jul 27 01:03:33 2005
@@ -19,6 +19,8 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.CiManagement;
@@ -42,6 +44,7 @@
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Scm;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
@@ -134,7 +137,10 @@
         this.file = project.file;
 
         // don't need a deep copy, they don't get modified or added/removed to/from - but make them unmodifiable to be sure!
-        this.dependencyArtifacts = Collections.unmodifiableSet( project.dependencyArtifacts );
+        if ( project.dependencyArtifacts != null )
+        {
+            this.dependencyArtifacts = Collections.unmodifiableSet( project.dependencyArtifacts );
+        }
         if ( project.artifacts != null )
         {
             this.artifacts = Collections.unmodifiableSet( project.artifacts );
@@ -1203,5 +1209,14 @@
         {
             return build.getExtensions();
         }
+    }
+
+    /**
+     * @todo the lazy initialisation of this makes me uneasy.
+     */
+    public static Set createArtifacts( ArtifactFactory artifactFactory, List dependencies )
+        throws InvalidVersionSpecificationException
+    {
+        return MavenMetadataSource.createArtifacts( artifactFactory, dependencies, null, null );
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org