1 package org.apache.maven.plugin; 2 3 18 19 import org.apache.maven.artifact.repository.ArtifactRepository; 20 import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata; 21 import org.apache.maven.artifact.repository.metadata.Metadata; 22 import org.apache.maven.artifact.repository.metadata.Plugin; 23 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; 24 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager; 25 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException; 26 import org.codehaus.plexus.logging.AbstractLogEnabled; 27 28 import java.util.ArrayList ; 29 import java.util.HashMap ; 30 import java.util.Iterator ; 31 import java.util.List ; 32 import java.util.Map ; 33 34 40 public class DefaultPluginMappingManager 41 extends AbstractLogEnabled 42 implements PluginMappingManager 43 { 44 protected RepositoryMetadataManager repositoryMetadataManager; 45 46 private Map pluginDefinitionsByPrefix = new HashMap (); 47 48 public org.apache.maven.model.Plugin getByPrefix( String pluginPrefix, List groupIds, List pluginRepositories, 49 ArtifactRepository localRepository ) 50 { 51 if ( !pluginDefinitionsByPrefix.containsKey( pluginPrefix ) ) 53 { 54 getLogger().info( "Searching repository for plugin with prefix: \'" + pluginPrefix + "\'." ); 55 56 loadPluginMappings( groupIds, pluginRepositories, localRepository ); 57 } 58 59 return (org.apache.maven.model.Plugin) pluginDefinitionsByPrefix.get( pluginPrefix ); 60 } 61 62 private void loadPluginMappings( List groupIds, List pluginRepositories, ArtifactRepository localRepository ) 63 { 64 List pluginGroupIds = new ArrayList ( groupIds ); 65 66 if ( !pluginGroupIds.contains( "org.apache.maven.plugins" ) ) 68 { 69 pluginGroupIds.add( "org.apache.maven.plugins" ); 70 } 71 if ( !pluginGroupIds.contains( "org.codehaus.mojo" ) ) 72 { 73 pluginGroupIds.add( "org.codehaus.mojo" ); 74 } 75 76 for ( Iterator it = pluginGroupIds.iterator(); it.hasNext(); ) 77 { 78 String groupId = (String ) it.next(); 79 80 try 81 { 82 loadPluginMappings( groupId, pluginRepositories, localRepository ); 83 } 84 catch ( RepositoryMetadataResolutionException e ) 85 { 86 getLogger().warn( "Cannot resolve plugin-mapping metadata for groupId: " + groupId + " - IGNORING." ); 87 88 getLogger().debug( "Error resolving plugin-mapping metadata for groupId: " + groupId + ".", e ); 89 } 90 } 91 } 92 93 private void loadPluginMappings( String groupId, List pluginRepositories, ArtifactRepository localRepository ) 94 throws RepositoryMetadataResolutionException 95 { 96 RepositoryMetadata metadata = new GroupRepositoryMetadata( groupId ); 97 98 repositoryMetadataManager.resolve( metadata, pluginRepositories, localRepository ); 99 100 Metadata repoMetadata = metadata.getMetadata(); 101 if ( repoMetadata != null ) 102 { 103 for ( Iterator pluginIterator = repoMetadata.getPlugins().iterator(); pluginIterator.hasNext(); ) 104 { 105 Plugin mapping = (Plugin) pluginIterator.next(); 106 107 String prefix = mapping.getPrefix(); 108 109 String artifactId = mapping.getArtifactId(); 110 111 org.apache.maven.model.Plugin plugin = new org.apache.maven.model.Plugin(); 112 113 plugin.setGroupId( metadata.getGroupId() ); 114 115 plugin.setArtifactId( artifactId ); 116 117 pluginDefinitionsByPrefix.put( prefix, plugin ); 118 } 119 } 120 } 121 } 122 | Popular Tags |