1 package org.apache.maven.artifact.repository.layout; 2 3 18 19 import org.apache.maven.artifact.Artifact; 20 import org.apache.maven.artifact.handler.ArtifactHandler; 21 import org.apache.maven.artifact.metadata.ArtifactMetadata; 22 import org.apache.maven.artifact.repository.ArtifactRepository; 23 24 27 public class DefaultRepositoryLayout 28 implements ArtifactRepositoryLayout 29 { 30 private static final char PATH_SEPARATOR = '/'; 31 32 private static final char GROUP_SEPARATOR = '.'; 33 34 private static final char ARTIFACT_SEPARATOR = '-'; 35 36 public String pathOf( Artifact artifact ) 37 { 38 ArtifactHandler artifactHandler = artifact.getArtifactHandler(); 39 40 StringBuffer path = new StringBuffer (); 41 42 path.append( formatAsDirectory( artifact.getGroupId() ) ).append( PATH_SEPARATOR ); 43 path.append( artifact.getArtifactId() ).append( PATH_SEPARATOR ); 44 path.append( artifact.getBaseVersion() ).append( PATH_SEPARATOR ); 45 path.append( artifact.getArtifactId() ).append( ARTIFACT_SEPARATOR ).append( artifact.getVersion() ); 46 47 if ( artifact.hasClassifier() ) 48 { 49 path.append( ARTIFACT_SEPARATOR ).append( artifact.getClassifier() ); 50 } 51 52 if ( artifactHandler.getExtension() != null && artifactHandler.getExtension().length() > 0 ) 53 { 54 path.append( GROUP_SEPARATOR ).append( artifactHandler.getExtension() ); 55 } 56 57 return path.toString(); 58 } 59 60 public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository ) 61 { 62 return pathOfRepositoryMetadata( metadata, metadata.getLocalFilename( repository ) ); 63 } 64 65 private String pathOfRepositoryMetadata( ArtifactMetadata metadata, String filename ) 66 { 67 StringBuffer path = new StringBuffer (); 68 69 path.append( formatAsDirectory( metadata.getGroupId() ) ).append( PATH_SEPARATOR ); 70 if ( !metadata.storedInGroupDirectory() ) 71 { 72 path.append( metadata.getArtifactId() ).append( PATH_SEPARATOR ); 73 74 if ( metadata.storedInArtifactVersionDirectory() ) 75 { 76 path.append( metadata.getBaseVersion() ).append( PATH_SEPARATOR ); 77 } 78 } 79 80 path.append( filename ); 81 82 return path.toString(); 83 } 84 85 public String pathOfRemoteRepositoryMetadata( ArtifactMetadata metadata ) 86 { 87 return pathOfRepositoryMetadata( metadata, metadata.getRemoteFilename() ); 88 } 89 90 private String formatAsDirectory( String directory ) 91 { 92 return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR ); 93 } 94 95 } 96 | Popular Tags |