1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.repository.legacy.resolver.transform;
20
21 import org.apache.maven.artifact.Artifact;
22 import org.apache.maven.artifact.metadata.ArtifactMetadata;
23 import org.apache.maven.artifact.repository.ArtifactRepository;
24 import org.apache.maven.artifact.repository.RepositoryRequest;
25 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
26 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
27 import org.apache.maven.artifact.repository.metadata.Versioning;
28 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
29 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
30 import org.codehaus.plexus.component.annotations.Component;
31
32
33
34
35
36
37 @Component(role = ArtifactTransformation.class, hint = "release")
38 public class ReleaseArtifactTransformation extends AbstractVersionTransformation {
39
40 public void transformForResolve(Artifact artifact, RepositoryRequest request)
41 throws ArtifactResolutionException, ArtifactNotFoundException {
42 if (Artifact.RELEASE_VERSION.equals(artifact.getVersion())) {
43 try {
44 String version = resolveVersion(artifact, request);
45
46 if (Artifact.RELEASE_VERSION.equals(version)) {
47 throw new ArtifactNotFoundException("Unable to determine the release version", artifact);
48 }
49
50 artifact.setBaseVersion(version);
51 artifact.updateVersion(version, request.getLocalRepository());
52 } catch (RepositoryMetadataResolutionException e) {
53 throw new ArtifactResolutionException(e.getMessage(), artifact, e);
54 }
55 }
56 }
57
58 public void transformForInstall(Artifact artifact, ArtifactRepository localRepository) {
59 ArtifactMetadata metadata = createMetadata(artifact);
60
61 artifact.addMetadata(metadata);
62 }
63
64 public void transformForDeployment(
65 Artifact artifact, ArtifactRepository remoteRepository, ArtifactRepository localRepository) {
66 ArtifactMetadata metadata = createMetadata(artifact);
67
68 artifact.addMetadata(metadata);
69 }
70
71 private ArtifactMetadata createMetadata(Artifact artifact) {
72 Versioning versioning = new Versioning();
73
74 versioning.updateTimestamp();
75 versioning.addVersion(artifact.getVersion());
76
77 if (artifact.isRelease()) {
78 versioning.setRelease(artifact.getVersion());
79 }
80
81 return new ArtifactRepositoryMetadata(artifact, versioning);
82 }
83
84 protected String constructVersion(Versioning versioning, String baseVersion) {
85 return versioning.getRelease();
86 }
87 }