1 package org.apache.maven.project.artifact;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.io.IOException;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.artifact.metadata.AbstractArtifactMetadata;
27 import org.apache.maven.artifact.metadata.ArtifactMetadata;
28 import org.apache.maven.artifact.repository.ArtifactRepository;
29 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException;
30 import org.codehaus.plexus.util.FileUtils;
31
32
33
34
35
36
37
38 public class ProjectArtifactMetadata
39 extends AbstractArtifactMetadata
40 {
41 private File originalFile;
42
43 private File transformedFile;
44
45 private boolean versionExpressionsResolved = false;
46
47 public ProjectArtifactMetadata( Artifact artifact )
48 {
49 this( artifact, null );
50 }
51
52 public ProjectArtifactMetadata( Artifact artifact,
53 File file )
54 {
55 super( artifact );
56 this.originalFile = file;
57 }
58
59 public String getRemoteFilename()
60 {
61 return getFilename();
62 }
63
64 public String getLocalFilename( ArtifactRepository repository )
65 {
66 return getFilename();
67 }
68
69 private String getFilename()
70 {
71 return getArtifactId() + "-" + artifact.getVersion() + ".pom";
72 }
73
74 public void storeInLocalRepository( ArtifactRepository localRepository,
75 ArtifactRepository remoteRepository )
76 throws RepositoryMetadataStoreException
77 {
78 File f = transformedFile == null ? originalFile : transformedFile;
79 if ( f == null )
80 {
81 return;
82 }
83
84 File destination = new File( localRepository.getBasedir(),
85 localRepository.pathOfLocalRepositoryMetadata( this, remoteRepository ) );
86
87
88
89
90
91
92
93
94 try
95 {
96 FileUtils.copyFile( f, destination );
97 }
98 catch ( IOException e )
99 {
100 throw new RepositoryMetadataStoreException( "Error copying POM to the local repository.", e );
101 }
102 }
103
104 public String toString()
105 {
106 return "project information for " + artifact.getArtifactId() + " " + artifact.getVersion();
107 }
108
109 public boolean storedInArtifactVersionDirectory()
110 {
111 return true;
112 }
113
114 public String getBaseVersion()
115 {
116 return artifact.getBaseVersion();
117 }
118
119 public Object getKey()
120 {
121 return "project " + artifact.getGroupId() + ":" + artifact.getArtifactId();
122 }
123
124 public void merge( ArtifactMetadata metadata )
125 {
126 ProjectArtifactMetadata m = (ProjectArtifactMetadata) metadata;
127 if ( !m.originalFile.equals( originalFile ) )
128 {
129 throw new IllegalStateException( "Cannot add two different pieces of metadata for: " + getKey() );
130 }
131 }
132
133 public boolean isVersionExpressionsResolved()
134 {
135 return versionExpressionsResolved;
136 }
137
138 public void setVersionExpressionsResolved( boolean versionExpressionsResolved )
139 {
140 this.versionExpressionsResolved = versionExpressionsResolved;
141 }
142
143 public void setFile( File file )
144 {
145 this.transformedFile = file;
146 }
147
148 public File getFile()
149 {
150 return transformedFile == null ? originalFile : transformedFile;
151 }
152 }