1 package org.apache.maven.plugins.dependency.utils;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.BufferedReader;
23 import java.io.File;
24 import java.io.FileOutputStream;
25 import java.io.IOException;
26 import java.io.OutputStreamWriter;
27 import java.io.StringReader;
28 import java.io.Writer;
29 import java.util.Objects;
30
31 import org.apache.maven.artifact.Artifact;
32 import org.apache.maven.artifact.ArtifactUtils;
33 import org.apache.maven.plugin.logging.Log;
34 import org.codehaus.plexus.util.StringUtils;
35
36
37
38
39
40
41 public final class DependencyUtil
42 {
43
44
45
46
47
48
49
50
51
52
53 public static String getFormattedFileName( Artifact artifact, boolean removeVersion )
54 {
55 return getFormattedFileName( artifact, removeVersion, false );
56 }
57
58
59
60
61
62
63
64
65
66
67
68 public static String getFormattedFileName( Artifact artifact, boolean removeVersion, boolean prependGroupId )
69 {
70 return getFormattedFileName( artifact, removeVersion, prependGroupId, false );
71 }
72
73
74
75
76
77
78
79
80
81
82
83
84 public static String getFormattedFileName( Artifact artifact, boolean removeVersion, boolean prependGroupId,
85 boolean useBaseVersion )
86 {
87 return getFormattedFileName( artifact, removeVersion, prependGroupId, useBaseVersion, false );
88 }
89
90
91
92
93
94
95
96
97
98
99
100
101
102 public static String getFormattedFileName( Artifact artifact, boolean removeVersion, boolean prependGroupId,
103 boolean useBaseVersion, boolean removeClassifier )
104 {
105 StringBuilder destFileName = new StringBuilder();
106
107 if ( prependGroupId )
108 {
109 destFileName.append( artifact.getGroupId() ).append( "." );
110 }
111
112 String versionString;
113 if ( !removeVersion )
114 {
115 if ( useBaseVersion )
116 {
117 versionString = "-" + ArtifactUtils.toSnapshotVersion( artifact.getVersion() );
118 }
119 else
120 {
121 versionString = "-" + artifact.getVersion();
122 }
123 }
124 else
125 {
126 versionString = "";
127 }
128
129 String classifierString = "";
130
131 if ( !removeClassifier && StringUtils.isNotEmpty( artifact.getClassifier() ) )
132 {
133 classifierString = "-" + artifact.getClassifier();
134 }
135 destFileName.append( artifact.getArtifactId() ).append( versionString );
136 destFileName.append( classifierString ).append( "." );
137 destFileName.append( artifact.getArtifactHandler().getExtension() );
138
139 return destFileName.toString();
140 }
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 public static File getFormattedOutputDirectory( boolean useSubdirsPerScope, boolean useSubdirsPerType,
157 boolean useSubdirPerArtifact, boolean useRepositoryLayout,
158 boolean removeVersion, boolean removeType, File outputDirectory,
159 Artifact artifact )
160 {
161 StringBuilder sb = new StringBuilder( 128 );
162 if ( useRepositoryLayout )
163 {
164
165 sb.append( artifact.getGroupId().replace( '.', File.separatorChar ) ).append( File.separatorChar );
166
167 sb.append( artifact.getArtifactId() ).append( File.separatorChar );
168
169 sb.append( artifact.getBaseVersion() ).append( File.separatorChar );
170 }
171 else
172 {
173 if ( useSubdirsPerScope )
174 {
175 sb.append( artifact.getScope() ).append( File.separatorChar );
176 }
177 if ( useSubdirsPerType )
178 {
179 sb.append( artifact.getType() ).append( "s" ).append( File.separatorChar );
180 }
181 if ( useSubdirPerArtifact )
182 {
183 String artifactString = getDependencyId( artifact, removeVersion, removeType );
184 sb.append( artifactString ).append( File.separatorChar );
185 }
186 }
187 return new File( outputDirectory, sb.toString() );
188 }
189
190 private static String getDependencyId( Artifact artifact, boolean removeVersion, boolean removeType )
191 {
192 StringBuilder sb = new StringBuilder();
193
194 sb.append( artifact.getArtifactId() );
195
196 if ( !removeVersion )
197 {
198 sb.append( "-" );
199 sb.append( artifact.getVersion() );
200 }
201
202 if ( StringUtils.isNotEmpty( artifact.getClassifier() ) )
203 {
204 sb.append( "-" );
205 sb.append( artifact.getClassifier() );
206 }
207
208
209
210
211 if ( !removeType && !Objects.equals( artifact.getClassifier(), artifact.getType() ) )
212 {
213 sb.append( "-" );
214 sb.append( artifact.getType() );
215 }
216
217 return sb.toString();
218 }
219
220
221
222
223
224
225
226
227
228
229
230 @Deprecated
231 public static synchronized void write( String string, File file, boolean append, Log log )
232 throws IOException
233 {
234 write( string, file, append, "UTF-8" );
235 }
236
237
238
239
240
241
242
243
244
245
246 public static synchronized void write( String string, File file, boolean append, String encoding )
247 throws IOException
248 {
249 file.getParentFile().mkdirs();
250
251 try ( Writer writer = new OutputStreamWriter( new FileOutputStream( file, append ), encoding ) )
252 {
253 writer.write( string );
254 }
255 }
256
257
258
259
260
261
262
263
264 public static synchronized void log( String string, Log log )
265 throws IOException
266 {
267 BufferedReader reader = new BufferedReader( new StringReader( string ) );
268
269 String line;
270
271 while ( ( line = reader.readLine() ) != null )
272 {
273 log.info( line );
274 }
275
276 reader.close();
277 }
278
279
280
281
282
283
284
285 public static String[] tokenizer( String str )
286 {
287 return StringUtils.split( cleanToBeTokenizedString( str ), "," );
288 }
289
290
291
292
293
294
295
296 public static String cleanToBeTokenizedString( String str )
297 {
298 String ret = "";
299 if ( !StringUtils.isEmpty( str ) )
300 {
301
302 ret = str.trim().replaceAll( "[\\s]*,[\\s]*", "," );
303 }
304
305 return ret;
306 }
307 }