1 package org.apache.maven.project; 2 3 18 19 import org.apache.maven.artifact.InvalidRepositoryException; 20 import org.apache.maven.artifact.repository.ArtifactRepository; 21 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; 22 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; 23 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; 24 import org.apache.maven.model.DeploymentRepository; 25 import org.apache.maven.model.Repository; 26 import org.apache.maven.model.RepositoryBase; 27 import org.apache.maven.model.RepositoryPolicy; 28 import org.codehaus.plexus.PlexusContainer; 29 import org.codehaus.plexus.component.repository.exception.ComponentLookupException; 30 31 import java.util.ArrayList ; 32 import java.util.Iterator ; 33 import java.util.List ; 34 35 public final class ProjectUtils 36 { 37 private ProjectUtils() 38 { 39 } 40 41 public static List buildArtifactRepositories( List repositories, 42 ArtifactRepositoryFactory artifactRepositoryFactory, 43 PlexusContainer container ) 44 throws InvalidRepositoryException 45 { 46 47 List repos = new ArrayList (); 48 49 for ( Iterator i = repositories.iterator(); i.hasNext(); ) 50 { 51 Repository mavenRepo = (Repository) i.next(); 52 53 ArtifactRepository artifactRepo = 54 buildArtifactRepository( mavenRepo, artifactRepositoryFactory, container ); 55 56 if ( !repos.contains( artifactRepo ) ) 57 { 58 repos.add( artifactRepo ); 59 } 60 } 61 return repos; 62 } 63 64 public static ArtifactRepository buildDeploymentArtifactRepository( DeploymentRepository repo, 65 ArtifactRepositoryFactory artifactRepositoryFactory, 66 PlexusContainer container ) 67 throws InvalidRepositoryException 68 { 69 if ( repo != null ) 70 { 71 String id = repo.getId(); 72 String url = repo.getUrl(); 73 74 ArtifactRepositoryLayout layout = getRepositoryLayout( repo, container ); 76 77 return artifactRepositoryFactory.createDeploymentArtifactRepository( id, url, layout, 78 repo.isUniqueVersion() ); 79 } 80 else 81 { 82 return null; 83 } 84 } 85 86 public static ArtifactRepository buildArtifactRepository( Repository repo, 87 ArtifactRepositoryFactory artifactRepositoryFactory, 88 PlexusContainer container ) 89 throws InvalidRepositoryException 90 { 91 if ( repo != null ) 92 { 93 String id = repo.getId(); 94 String url = repo.getUrl(); 95 96 ArtifactRepositoryLayout layout = getRepositoryLayout( repo, container ); 98 99 ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repo.getSnapshots() ); 100 ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repo.getReleases() ); 101 102 return artifactRepositoryFactory.createArtifactRepository( id, url, layout, snapshots, releases ); 103 } 104 else 105 { 106 return null; 107 } 108 } 109 110 private static ArtifactRepositoryPolicy buildArtifactRepositoryPolicy( RepositoryPolicy policy ) 111 { 112 boolean enabled = true; 113 String updatePolicy = null; 114 String checksumPolicy = null; 115 116 if ( policy != null ) 117 { 118 enabled = policy.isEnabled(); 119 if ( policy.getUpdatePolicy() != null ) 120 { 121 updatePolicy = policy.getUpdatePolicy(); 122 } 123 if ( policy.getChecksumPolicy() != null ) 124 { 125 checksumPolicy = policy.getChecksumPolicy(); 126 } 127 } 128 129 return new ArtifactRepositoryPolicy( enabled, updatePolicy, checksumPolicy ); 130 } 131 132 private static ArtifactRepositoryLayout getRepositoryLayout( RepositoryBase mavenRepo, PlexusContainer container ) 133 throws InvalidRepositoryException 134 { 135 String layout = mavenRepo.getLayout(); 136 137 ArtifactRepositoryLayout repositoryLayout; 138 try 139 { 140 repositoryLayout = (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE, layout ); 141 } 142 catch ( ComponentLookupException e ) 143 { 144 throw new InvalidRepositoryException( "Cannot find layout implementation corresponding to: \'" + layout + 145 "\' for remote repository with id: \'" + mavenRepo.getId() + "\'.", e ); 146 } 147 return repositoryLayout; 148 } 149 150 } 151 | Popular Tags |