1 package org.apache.maven.plugins.site;
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.doxia.siterenderer.DocumentRenderer;
23 import org.apache.maven.doxia.siterenderer.RendererException;
24 import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.apache.maven.reporting.MavenReport;
28
29 import java.io.File;
30 import java.io.IOException;
31 import java.util.Collections;
32 import java.util.List;
33 import java.util.Locale;
34 import java.util.Map;
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public class SiteMojo
50 extends AbstractSiteRenderingMojo
51 {
52
53
54
55
56
57
58 protected File outputDirectory;
59
60
61
62
63
64
65 private boolean generateReports;
66
67
68
69
70
71
72
73 private boolean generateSitemap;
74
75
76
77
78
79
80
81
82
83
84 private boolean validate;
85
86
87
88
89
90
91
92
93
94
95 public void execute()
96 throws MojoExecutionException, MojoFailureException
97 {
98 List<MavenReport> filteredReports;
99 if ( generateReports )
100 {
101 filteredReports = filterReports( reports );
102 }
103 else
104 {
105 filteredReports = Collections.EMPTY_LIST;
106 }
107
108 try
109 {
110 List<Locale> localesList = siteTool.getAvailableLocales( locales );
111
112
113 Locale defaultLocale = localesList.get( 0 );
114 Locale.setDefault( defaultLocale );
115
116 for ( Locale locale : localesList )
117 {
118 renderLocale( locale, filteredReports );
119 }
120 }
121 catch ( RendererException e )
122 {
123 throw new MojoExecutionException( "Error during page generation", e );
124 }
125 catch ( IOException e )
126 {
127 throw new MojoExecutionException( "Error during site generation", e );
128 }
129 }
130
131 private void renderLocale( Locale locale, List<MavenReport> reports )
132 throws IOException, RendererException, MojoFailureException, MojoExecutionException
133 {
134 SiteRenderingContext context = createSiteRenderingContext( locale );
135
136 context.setInputEncoding( getInputEncoding() );
137 context.setOutputEncoding( getOutputEncoding() );
138 context.setValidate( validate );
139 if ( validate )
140 {
141 getLog().info( "Validation is switched on, xml input documents will be validated!" );
142 }
143
144 Map<String, DocumentRenderer> documents = locateDocuments( context, reports, locale );
145
146 File outputDir = getOutputDirectory( locale );
147
148
149 for ( MavenReport report : reports )
150 {
151 report.setReportOutputDirectory( outputDir );
152 }
153
154 siteRenderer.render( documents.values(), context, outputDir );
155
156 if ( generateSitemap )
157 {
158 getLog().info( "Generating Sitemap." );
159
160 new SiteMap( getOutputEncoding(), i18n )
161 .generate( context.getDecoration(), generatedSiteDirectory, locale );
162 }
163
164
165 context.getSiteDirectories().clear();
166 context.addSiteDirectory( generatedSiteDirectory );
167
168 documents = siteRenderer.locateDocumentFiles( context );
169
170 siteRenderer.render( documents.values(), context, outputDir );
171 }
172
173 private File getOutputDirectory( Locale locale )
174 {
175 File file;
176 if ( locale.getLanguage().equals( Locale.getDefault().getLanguage() ) )
177 {
178 file = outputDirectory;
179 }
180 else
181 {
182 file = new File( outputDirectory, locale.getLanguage() );
183 }
184
185
186 if ( !file.exists() )
187 {
188 file.mkdirs();
189 }
190
191 return file;
192 }
193 }