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