1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.artifact.repository.layout;
20
21 import org.apache.maven.artifact.Artifact;
22 import org.apache.maven.artifact.handler.ArtifactHandler;
23 import org.apache.maven.artifact.metadata.ArtifactMetadata;
24 import org.apache.maven.artifact.repository.ArtifactRepository;
25 import org.codehaus.plexus.component.annotations.Component;
26
27
28
29
30 @Component(role = ArtifactRepositoryLayout.class, hint = "flat")
31 public class FlatRepositoryLayout implements ArtifactRepositoryLayout {
32
33 private static final char ARTIFACT_SEPARATOR = '-';
34
35 private static final char GROUP_SEPARATOR = '.';
36
37 public String getId() {
38 return "flat";
39 }
40
41 public String pathOf(Artifact artifact) {
42 ArtifactHandler artifactHandler = artifact.getArtifactHandler();
43
44 StringBuilder path = new StringBuilder(128);
45
46 path.append(artifact.getArtifactId()).append(ARTIFACT_SEPARATOR).append(artifact.getVersion());
47
48 if (artifact.hasClassifier()) {
49 path.append(ARTIFACT_SEPARATOR).append(artifact.getClassifier());
50 }
51
52 if (artifactHandler.getExtension() != null
53 && artifactHandler.getExtension().length() > 0) {
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 return pathOfRepositoryMetadata(metadata.getLocalFilename(repository));
62 }
63
64 private String pathOfRepositoryMetadata(String filename) {
65 StringBuilder path = new StringBuilder(128);
66
67 path.append(filename);
68
69 return path.toString();
70 }
71
72 public String pathOfRemoteRepositoryMetadata(ArtifactMetadata metadata) {
73 return pathOfRepositoryMetadata(metadata.getRemoteFilename());
74 }
75
76 @Override
77 public String toString() {
78 return getId();
79 }
80 }