1 package org.apache.maven.plugin.resources.remote;
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.plugin.AbstractMojo;
23 import org.apache.maven.plugin.MojoExecutionException;
24 import org.apache.maven.plugin.resources.remote.io.xpp3.RemoteResourcesBundleXpp3Writer;
25 import org.codehaus.plexus.util.DirectoryScanner;
26 import org.codehaus.plexus.util.FileUtils;
27 import org.codehaus.plexus.util.StringUtils;
28
29 import java.io.File;
30 import java.io.FileWriter;
31 import java.io.IOException;
32 import java.io.Writer;
33 import java.util.Arrays;
34 import java.util.List;
35
36
37
38
39
40
41
42 public class BundleRemoteResourcesMojo
43 extends AbstractMojo
44 {
45 public static final String RESOURCES_MANIFEST = "META-INF/maven/remote-resources.xml";
46
47 private static final String[] DEFAULT_INCLUDES = new String [] {
48 "**/*.txt",
49 "**/*.vm",
50 };
51
52
53
54
55
56
57
58 private File resourcesDirectory;
59
60
61
62
63
64
65 private File outputDirectory;
66
67
68
69
70
71
72
73
74
75 private String[] includes;
76
77
78
79
80
81
82
83 private String[] excludes;
84
85
86
87
88
89
90
91
92 private String sourceEncoding;
93
94 public void execute()
95 throws MojoExecutionException
96 {
97 if ( !resourcesDirectory.exists() )
98 {
99 return;
100 }
101
102
103
104
105 RemoteResourcesBundle remoteResourcesBundle = new RemoteResourcesBundle();
106 remoteResourcesBundle.setSourceEncoding( sourceEncoding );
107
108 DirectoryScanner scanner = new DirectoryScanner();
109
110 scanner.setBasedir( resourcesDirectory );
111 if ( includes != null && includes.length != 0 )
112 {
113 scanner.setIncludes( includes );
114 }
115 else
116 {
117 scanner.setIncludes( DEFAULT_INCLUDES );
118 }
119
120 if ( excludes != null && excludes.length != 0 )
121 {
122 scanner.setExcludes( excludes );
123 }
124
125 scanner.addDefaultExcludes();
126 scanner.scan();
127
128 List<String> includedFiles = Arrays.asList( scanner.getIncludedFiles() );
129
130 for ( String resource : includedFiles )
131 {
132 remoteResourcesBundle.addRemoteResource( StringUtils.replace( resource, '\\', '/' ) );
133 }
134
135
136 RemoteResourcesBundleXpp3Writer w = new RemoteResourcesBundleXpp3Writer();
137
138 try
139 {
140 File f = new File( outputDirectory, RESOURCES_MANIFEST );
141
142 FileUtils.mkdir( f.getParentFile().getAbsolutePath() );
143
144 Writer writer = new FileWriter( f );
145
146 w.write( writer, remoteResourcesBundle );
147 }
148 catch ( IOException e )
149 {
150 throw new MojoExecutionException( "Error creating remote resources manifest.", e );
151 }
152 }
153 }