1 package org.apache.maven.plugins.shade.resource;
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.plugins.shade.relocation.Relocator;
23 import org.codehaus.plexus.util.IOUtil;
24
25 import java.io.File;
26 import java.io.FileInputStream;
27 import java.io.IOException;
28 import java.io.InputStream;
29 import java.util.List;
30 import java.util.jar.JarEntry;
31 import java.util.jar.JarOutputStream;
32
33
34
35
36
37 public class IncludeResourceTransformer
38 extends AbstractCompatibilityTransformer
39 {
40 File file;
41
42 String resource;
43
44 private long time = Long.MIN_VALUE;
45
46 public boolean canTransformResource( String r )
47 {
48 return false;
49 }
50
51 public void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
52 throws IOException
53 {
54 if ( time > this.time )
55 {
56 this.time = time;
57 }
58 }
59
60 public boolean hasTransformedResource()
61 {
62 return file != null && file.exists();
63 }
64
65 public void modifyOutputStream( JarOutputStream jos )
66 throws IOException
67 {
68 JarEntry jarEntry = new JarEntry( resource );
69 jarEntry.setTime( time );
70
71 try ( InputStream in = new FileInputStream( file ) )
72 {
73 jos.putNextEntry( jarEntry );
74 IOUtil.copy( in, jos );
75 }
76 }
77
78 @Override
79 public String toString()
80 {
81 return "IncludeResourceTransformer {resource: '" + resource + "'}";
82 }
83 }