This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/configurablesourcedirectories
in repository https://gitbox.apache.org/repos/asf/maven-site-plugin.git

commit 103ecd45537f23b1b15aa2c366c7ce44e4b34d80
Author: Konrad Windszus <[email protected]>
AuthorDate: Wed Mar 11 15:16:43 2026 +0100

    Allow to give alternative source directories for sites
---
 pom.xml                                            |  6 ++---
 .../site/render/AbstractSiteRenderingMojo.java     | 28 +++++++++++++++++-----
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/pom.xml b/pom.xml
index 3b1e38f6..7ced54d2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@ under the License.
   </parent>
 
   <artifactId>maven-site-plugin</artifactId>
-  <version>4.0.0-M17-SNAPSHOT</version>
+  <version>3.22.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
   <name>Apache Maven Site Plugin</name>
@@ -198,8 +198,8 @@ under the License.
     <mavenVersion>3.6.3</mavenVersion>
     <!-- for dependencies -->
     <jettyVersion>9.4.57.v20241219</jettyVersion>
-    <doxiaVersion>2.0.0</doxiaVersion>
-    <doxiaSitetoolsVersion>2.0.0</doxiaSitetoolsVersion>
+    <doxiaVersion>2.1.0-SNAPSHOT</doxiaVersion>
+    <doxiaSitetoolsVersion>2.1.0-SNAPSHOT</doxiaSitetoolsVersion>
     <wagonVersion>3.5.3</wagonVersion>
     <slf4jVersion>1.7.36</slf4jVersion>
     <!-- for ITs -->
diff --git 
a/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
 
b/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
index 72270446..5c248b07 100644
--- 
a/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
@@ -100,13 +100,22 @@ public abstract class AbstractSiteRenderingMojo extends 
AbstractSiteDescriptorMo
      * build time mean).
      * This directory is expected to have the same structure as 
<code>siteDirectory</code>
      * (ie. one directory per Doxia-source-supported markup types).
-     *
-     * todo should we deprecate in favour of reports directly using Doxia Sink 
API, without this Doxia source
-     * intermediate step?
+     * This is never editable.
      */
     @Parameter(alias = "workingDirectory", defaultValue = 
"${project.build.directory}/generated-site")
     protected File generatedSiteDirectory;
 
+    /**
+     * Optional list of source directories to be used instead of {@link 
#siteDirectory} for rendering edit URLs.
+     * This is only used for documents rendered from {@link #siteDirectory} 
but not for those rendered from {@link 
AbstractSiteRenderingMojo#generatedSiteDirectory}.
+     * as the latter ones are always considered non-editable.
+     * 
+     * The first directory containing a document with the given relative path 
is used for generating the URL (the same relative path as the document has to 
{@link #siteDirectory}).
+     * @since 3.22.0
+     */
+    @Parameter
+    protected File[] alternativeSiteSourceDirectories;
+
     /**
      * The current Maven session.
      */
@@ -320,14 +329,21 @@ public abstract class AbstractSiteRenderingMojo extends 
AbstractSiteDescriptorMo
 
         // Generate static site
         context.setRootDirectory(project.getBasedir());
+        final SiteDirectory mainSiteDirectory;
         if (!locale.equals(SiteTool.DEFAULT_LOCALE)) {
-            context.addSiteDirectory(new SiteDirectory(new File(siteDirectory, 
locale.toString()), true));
+            mainSiteDirectory = new SiteDirectory(new File(this.siteDirectory, 
locale.toString()), true);
             context.addSiteDirectory(new SiteDirectory(new 
File(generatedSiteDirectory, locale.toString()), false));
         } else {
-            context.addSiteDirectory(new SiteDirectory(siteDirectory, true));
+            mainSiteDirectory = new SiteDirectory(siteDirectory, true);
             context.addSiteDirectory(new SiteDirectory(generatedSiteDirectory, 
false));
         }
-
+        if (alternativeSiteSourceDirectories != null) {
+            for (File additionalSiteSourceDirectory : 
alternativeSiteSourceDirectories) {
+                
mainSiteDirectory.addAlternativeSourceDirectory(additionalSiteSourceDirectory);
+            }
+        }
+        context.addSiteDirectory(mainSiteDirectory);
+        
         if (moduleExcludes != null) {
             context.setModuleExcludes(moduleExcludes);
         }

Reply via email to