@@ -100,13 +100,20 @@ public abstract class AbstractSiteRenderingMojo extends AbstractSiteDescriptorMo
100100 * build time mean).
101101 * This directory is expected to have the same structure as <code>siteDirectory</code>
102102 * (ie. one directory per Doxia-source-supported markup types).
103- *
104- * todo should we deprecate in favour of reports directly using Doxia Sink API, without this Doxia source
105- * intermediate step?
103+ * This is never editable.
106104 */
107105 @ Parameter (alias = "workingDirectory" , defaultValue = "${project.build.directory}/generated-site" )
108106 protected File generatedSiteDirectory ;
109107
108+ /**
109+ * Optional list of source directories to be used instead of {@link #siteDirectory} for rendering edit URLs.
110+ * This is only used for documents rendered from {@link #siteDirectory} but not for {@link AbstractSiteRenderingMojo#generatedSiteDirectory}.
111+ * The latter are always considered non-editable!
112+ * @since 3.22.0
113+ */
114+ @ Parameter
115+ protected File [] alternativeSiteSourceDirectories ;
116+
110117 /**
111118 * The current Maven session.
112119 */
@@ -320,14 +327,21 @@ protected SiteRenderingContext createSiteRenderingContext(Locale locale)
320327
321328 // Generate static site
322329 context .setRootDirectory (project .getBasedir ());
330+ final SiteDirectory mainSiteDirectory ;
323331 if (!locale .equals (SiteTool .DEFAULT_LOCALE )) {
324- context . addSiteDirectory ( new SiteDirectory (new File (siteDirectory , locale .toString ()), true ) );
332+ mainSiteDirectory = new SiteDirectory (new File (this . siteDirectory , locale .toString ()), true );
325333 context .addSiteDirectory (new SiteDirectory (new File (generatedSiteDirectory , locale .toString ()), false ));
326334 } else {
327- context . addSiteDirectory ( new SiteDirectory (siteDirectory , true ) );
335+ mainSiteDirectory = new SiteDirectory (siteDirectory , true );
328336 context .addSiteDirectory (new SiteDirectory (generatedSiteDirectory , false ));
329337 }
330-
338+ if (alternativeSiteSourceDirectories != null ) {
339+ for (File additionalSiteSourceDirectory : alternativeSiteSourceDirectories ) {
340+ mainSiteDirectory .addAlternativeSourceDirectory (additionalSiteSourceDirectory );
341+ }
342+ }
343+ context .addSiteDirectory (mainSiteDirectory );
344+
331345 if (moduleExcludes != null ) {
332346 context .setModuleExcludes (moduleExcludes );
333347 }
0 commit comments