You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2023/02/11 23:35:35 UTC

[maven-jxr] 01/01: Prepare for Doxia 2.0.0

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

michaelo pushed a commit to branch doxia-2.0.0
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git

commit dac91959c9a38926f5fd0497eb4f5438b6756ce7
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Fri Dec 2 22:50:59 2022 +0100

    Prepare for Doxia 2.0.0
    
    This also fixes JXR-169
---
 maven-jxr-plugin/pom.xml                           |  6 +++---
 .../apache/maven/plugin/jxr/AbstractJxrReport.java | 17 ++++++---------
 .../org/apache/maven/plugin/jxr/JxrReport.java     |  8 +++----
 .../org/apache/maven/plugin/jxr/JxrTestReport.java |  6 +++---
 .../maven/plugin/jxr/AbstractJxrTestCase.java      |  6 ++++++
 .../org/apache/maven/plugin/jxr/JxrReportTest.java | 20 ++++++++---------
 .../jxr/stubs/AggregateTestMavenProjectStub.java   | 17 ++++++++++++---
 .../DefaultConfigurationMavenProjectStub.java      | 17 +++++++++++----
 .../ExcludeConfigurationMavenProjectStub.java      | 16 +++++++++++---
 .../IncludeConfigurationMavenProjectStub.java      | 16 +++++++++++---
 .../maven/plugin/jxr/stubs/JxrProjectStub.java     | 18 ++++++++++++++++
 .../jxr/stubs/NoJavadocDirMavenProjectStub.java    | 16 +++++++++++---
 ...NoJavadocLinkConfigurationMavenProjectStub.java | 18 +++++++++++-----
 .../plugin/jxr/stubs/PomMavenProjectStub.java      | 25 +++++++++++-----------
 .../jxr/stubs/TestSourceDirMavenProjectStub.java   | 14 ++++++++++--
 maven-jxr/pom.xml                                  |  6 +++---
 .../org/apache/maven/jxr/DirectoryIndexer.java     | 14 +++++-------
 pom.xml                                            |  6 +++---
 18 files changed, 165 insertions(+), 81 deletions(-)

diff --git a/maven-jxr-plugin/pom.xml b/maven-jxr-plugin/pom.xml
index 226b9ed..09f4c1f 100644
--- a/maven-jxr-plugin/pom.xml
+++ b/maven-jxr-plugin/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <groupId>org.apache.maven.jxr</groupId>
     <artifactId>jxr</artifactId>
-    <version>3.3.1-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.maven.plugins</groupId>
@@ -89,12 +89,12 @@ under the License.
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
-      <version>3.1.1</version>
+      <version>4.0.0-M4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-impl</artifactId>
-      <version>3.2.0</version>
+      <version>4.0.0-M4</version>
     </dependency>
 
     <!-- shared utils -->
diff --git a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java
index 6d201ab..82e44d3 100644
--- a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java
+++ b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java
@@ -76,7 +76,7 @@ public abstract class AbstractJxrReport
     /**
      * String used at the bottom of the Xref HTML files.
      */
-    @Parameter( property = "bottom", defaultValue = "Copyright &#169; {inceptionYear}&#x2013;{currentYear} {organizationName}. All rights reserved." )
+    @Parameter( property = "bottom", defaultValue = "&#169; {inceptionYear}&#x2013;{currentYear} {organizationName}" )
     private String bottom;
 
     // CHECKSTYLE_ON: LineLength
@@ -111,12 +111,6 @@ public abstract class AbstractJxrReport
     @Parameter
     private ArrayList<String> includes;
 
-    /**
-     * The projects in the reactor for aggregation report.
-     */
-    @Parameter( defaultValue = "${reactorProjects}", readonly = true )
-    protected List<MavenProject> reactorProjects;
-
     /**
      * Whether to skip this execution.
      *
@@ -418,15 +412,16 @@ public abstract class AbstractJxrReport
         return project;
     }
 
-    /**
-     * Returns the Maven session.
-     * @return Maven session
-     */
     protected MavenSession getSession()
     {
         return session;
     }
 
+    protected List<MavenProject> getReactorProjects()
+    {
+        return reactorProjects;
+    }
+
     /**
      * Returns the correct resource bundle according to the locale.
      *
diff --git a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrReport.java b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrReport.java
index 7bc724f..ad298d6 100644
--- a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrReport.java
+++ b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrReport.java
@@ -87,14 +87,14 @@ public class JxrReport
 
         List<String> l = new ArrayList<>();
 
-        if ( !"pom".equals( getProject().getPackaging().toLowerCase( Locale.US ) ) )
+        if ( !"pom".equals( getProject().getPackaging().toLowerCase( Locale.ENGLISH ) ) )
         {
             l.addAll( sourceDirs );
         }
 
         if ( getProject().getExecutionProject() != null )
         {
-            if ( !"pom".equals( getProject().getExecutionProject().getPackaging().toLowerCase( Locale.US ) ) )
+            if ( !"pom".equals( getProject().getExecutionProject().getPackaging().toLowerCase( Locale.ENGLISH ) ) )
             {
                 l.addAll( getProject().getExecutionProject().getCompileSourceRoots() );
             }
@@ -108,14 +108,14 @@ public class JxrReport
     {
         List<String> l = new ArrayList<>();
 
-        if ( !"pom".equals( project.getPackaging().toLowerCase( Locale.US ) ) )
+        if ( !"pom".equals( project.getPackaging().toLowerCase( Locale.ENGLISH ) ) )
         {
             l.addAll( project.getCompileSourceRoots() );
         }
 
         if ( project.getExecutionProject() != null )
         {
-            if ( !"pom".equals( project.getExecutionProject().getPackaging().toLowerCase( Locale.US ) ) )
+            if ( !"pom".equals( project.getExecutionProject().getPackaging().toLowerCase( Locale.ENGLISH ) ) )
             {
                 l.addAll( project.getExecutionProject().getCompileSourceRoots() );
             }
diff --git a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrTestReport.java b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrTestReport.java
index 99945d6..2c8be84 100644
--- a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrTestReport.java
+++ b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrTestReport.java
@@ -65,14 +65,14 @@ public class JxrTestReport
     {
         List<String> l = new ArrayList<>();
 
-        if ( !"pom".equals( getProject().getPackaging().toLowerCase( Locale.US ) ) )
+        if ( !"pom".equals( getProject().getPackaging().toLowerCase( Locale.ENGLISH ) ) )
         {
             l.addAll( sourceDirs );
         }
 
         if ( getProject().getExecutionProject() != null )
         {
-            if ( !"pom".equals( getProject().getExecutionProject().getPackaging().toLowerCase( Locale.US ) ) )
+            if ( !"pom".equals( getProject().getExecutionProject().getPackaging().toLowerCase( Locale.ENGLISH ) ) )
             {
                 l.addAll( getProject().getExecutionProject().getTestCompileSourceRoots() );
             }
@@ -88,7 +88,7 @@ public class JxrTestReport
 
         if ( project.getExecutionProject() != null )
         {
-            if ( !"pom".equals( project.getExecutionProject().getPackaging().toLowerCase( Locale.US ) ) )
+            if ( !"pom".equals( project.getExecutionProject().getPackaging().toLowerCase( Locale.ENGLISH ) ) )
             {
                 l.addAll( project.getExecutionProject().getTestCompileSourceRoots() );
             }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/AbstractJxrTestCase.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/AbstractJxrTestCase.java
index 3b008b0..01c2dcc 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/AbstractJxrTestCase.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/AbstractJxrTestCase.java
@@ -22,6 +22,8 @@ package org.apache.maven.plugin.jxr;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
+import java.util.Collections;
+import java.util.List;
 
 import org.apache.maven.plugin.LegacySupport;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
@@ -125,8 +127,12 @@ public abstract class AbstractJxrTestCase
             (DefaultRepositorySystemSession) legacySupport.getRepositorySession();
         repoSession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repoSession, new LocalRepository( artifactStubFactory.getWorkingDir() ) ) );
 
+        List<MavenProject> reactorProjects = mojo.getReactorProjects() != null ? mojo.getReactorProjects() : Collections.emptyList();
+
         setVariableValueToObject( mojo, "session", legacySupport.getSession() );
+        setVariableValueToObject( mojo, "reactorProjects", reactorProjects );
         setVariableValueToObject( mojo, "remoteRepositories", mojo.getProject().getRemoteArtifactRepositories() );
+        setVariableValueToObject( mojo, "siteDirectory", new File( mojo.getProject().getBasedir(), "src/site" ) );
         return mojo;
     }
 
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrReportTest.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrReportTest.java
index 90b0a74..66b934f 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrReportTest.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrReportTest.java
@@ -102,10 +102,10 @@ public class JxrReportTest
 
         //check if there's a link to the javadoc files
         String str = readFile( xrefDir, "def/configuration/AppSample.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/def/configuration/appsample.html\"" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/def/configuration/appsample.html\"" ) );
 
         str = readFile( xrefDir, "def/configuration/App.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/def/configuration/app.html\"" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/def/configuration/app.html\"" ) );
 
         // check if encoding is UTF-8, the default value
         assertTrue( str.contains( "text/html; charset=UTF-8" ) );
@@ -141,10 +141,10 @@ public class JxrReportTest
 
         //check if there's a link to the javadoc files
         String str = readFile( xrefDir, "def/configuration/AppSample.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/def/configuration/appsample.html\"" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/def/configuration/appsample.html\"" ) );
 
         str = readFile( xrefDir, "def/configuration/App.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/def/configuration/app.html\"" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/def/configuration/app.html\"" ) );
 
         // check if encoding is UTF-8, the default value
         assertTrue( str.contains( "text/html; charset=UTF-8" ) );
@@ -184,10 +184,10 @@ public class JxrReportTest
 
         //check if there's a link to the javadoc files
         String str = readFile( xrefDir, "def/configuration/AppSample.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/def/configuration/appsample.html\"" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/def/configuration/appsample.html\"" ) );
 
         str = readFile( xrefDir, "def/configuration/App.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/def/configuration/app.html\"" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/def/configuration/app.html\"" ) );
 
         // check if encoding is UTF-8, the default value
         assertTrue( str.contains( "text/html; charset=UTF-8" ) );
@@ -260,11 +260,11 @@ public class JxrReportTest
 
         //check if there's a link to the javadoc files
         String str = readFile( xrefDir, "nojavadoclink/configuration/AppSample.html" );
-        assertEquals( str.toLowerCase( Locale.US ).indexOf( "/apidocs/nojavadoclink/configuration/appsample.html\"" ),
+        assertEquals( str.toLowerCase( Locale.ENGLISH ).indexOf( "/apidocs/nojavadoclink/configuration/appsample.html\"" ),
                 -1 );
 
         str = readFile( xrefDir, "nojavadoclink/configuration/App.html" );
-        assertEquals( str.toLowerCase( Locale.US ).indexOf( "/apidocs/nojavadoclink/configuration/app.html\"" ), -1 );
+        assertEquals( str.toLowerCase( Locale.ENGLISH ).indexOf( "/apidocs/nojavadoclink/configuration/app.html\"" ), -1 );
 
         str = readFile( xrefDir, "nojavadoclink/configuration/sample/Sample.html" );
         assertEquals( str.toLowerCase().indexOf( "/apidocs/nojavadoclink/configuration/sample/sample.html\"" ), -1 );
@@ -312,10 +312,10 @@ public class JxrReportTest
 
         //check if there's a link to the javadoc files
         String str = readFile( xrefDir, "nojavadocdir/test/AppSample.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/nojavadocdir/test/appsample.html" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/nojavadocdir/test/appsample.html" ) );
 
         str = readFile( xrefDir, "nojavadocdir/test/App.html" );
-        assertTrue( str.toLowerCase( Locale.US ).contains( "/apidocs/nojavadocdir/test/app.html" ) );
+        assertTrue( str.toLowerCase( Locale.ENGLISH ).contains( "/apidocs/nojavadocdir/test/app.html" ) );
     }
 
     /**
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/AggregateTestMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/AggregateTestMavenProjectStub.java
index 057aebb..9b236f5 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/AggregateTestMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/AggregateTestMavenProjectStub.java
@@ -25,6 +25,7 @@ import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 
+import java.io.File;
 import java.io.FileReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -33,7 +34,7 @@ import java.util.List;
  * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
  */
 public class AggregateTestMavenProjectStub
-    extends MavenProjectStub
+    extends JxrProjectStub
 {
     private List<ReportPlugin> reportPlugins = new ArrayList<>();
 
@@ -45,7 +46,7 @@ public class AggregateTestMavenProjectStub
         try
         {
             model = pomReader.read( new FileReader(
-                getBasedir() + "/src/test/resources/unit/aggregate-test/aggregate-test-plugin-config.xml" ) );
+                getBasedir() + "/" + getPOM() ) );
             setModel( model );
         }
         catch ( Exception ignored )
@@ -61,7 +62,7 @@ public class AggregateTestMavenProjectStub
 
         String basedir = getBasedir().getAbsolutePath();
         List<String> compileSourceRoots = new ArrayList<>();
-        compileSourceRoots.add( basedir + "/src/test/resources/unit/aggregate-test/aggregate/test" );
+        compileSourceRoots.add( basedir + "/aggregate/test" );
         setCompileSourceRoots( compileSourceRoots );
 
         //set the report plugins
@@ -78,4 +79,14 @@ public class AggregateTestMavenProjectStub
     {
         return reportPlugins;
     }
+
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/aggregate-test" );
+    }
+
+    @Override
+    protected String getPOM() {
+        return "aggregate-test-plugin-config.xml";
+    }
 }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/DefaultConfigurationMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/DefaultConfigurationMavenProjectStub.java
index 326a754..3aa85d6 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/DefaultConfigurationMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/DefaultConfigurationMavenProjectStub.java
@@ -23,8 +23,8 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 
+import java.io.File;
 import java.io.FileReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -33,7 +33,7 @@ import java.util.List;
  * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
  */
 public class DefaultConfigurationMavenProjectStub
-    extends MavenProjectStub
+    extends JxrProjectStub
 {
     private List<ReportPlugin> reportPlugins = new ArrayList<>();
 
@@ -45,7 +45,7 @@ public class DefaultConfigurationMavenProjectStub
         try
         {
             model = pomReader.read( new FileReader( getBasedir() +
-                "/src/test/resources/unit/default-configuration/default-configuration-plugin-config.xml" ) );
+                "/" + getPOM() ) );
             setModel( model );
         }
         catch ( Exception ignored )
@@ -61,7 +61,7 @@ public class DefaultConfigurationMavenProjectStub
 
         String basedir = getBasedir().getAbsolutePath();
         List<String> compileSourceRoots = new ArrayList<>();
-        compileSourceRoots.add( basedir + "/src/test/resources/unit/default-configuration/def/configuration" );
+        compileSourceRoots.add( basedir + "/def/configuration" );
         setCompileSourceRoots( compileSourceRoots );
 
         //set the report plugins
@@ -79,4 +79,13 @@ public class DefaultConfigurationMavenProjectStub
         return reportPlugins;
     }
 
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/default-configuration" );
+    }
+
+    @Override
+    protected String getPOM() {
+        return "default-configuration-plugin-config.xml";
+    }
 }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/ExcludeConfigurationMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/ExcludeConfigurationMavenProjectStub.java
index 24c0fa0..4fa0099 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/ExcludeConfigurationMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/ExcludeConfigurationMavenProjectStub.java
@@ -24,6 +24,7 @@ import org.apache.maven.model.Model;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 
+import java.io.File;
 import java.io.FileReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -43,8 +44,7 @@ public class ExcludeConfigurationMavenProjectStub
 
         try
         {
-            model = pomReader.read( new FileReader( getBasedir() +
-                "/src/test/resources/unit/exclude-configuration/exclude-configuration-plugin-config.xml" ) );
+            model = pomReader.read( new FileReader( getBasedir() + "/" + getPOM() ) );
             setModel( model );
         }
         catch ( Exception ignored )
@@ -60,7 +60,7 @@ public class ExcludeConfigurationMavenProjectStub
 
         String basedir = getBasedir().getAbsolutePath();
         List<String> compileSourceRoots = new ArrayList<>();
-        compileSourceRoots.add( basedir + "/src/test/resources/unit/exclude-configuration/exclude/configuration" );
+        compileSourceRoots.add( basedir + "/exclude/configuration" );
         setCompileSourceRoots( compileSourceRoots );
 
         // set the report plugins
@@ -77,4 +77,14 @@ public class ExcludeConfigurationMavenProjectStub
     {
         return reportPlugins;
     }
+
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/exclude-configuration" );
+    }
+
+    @Override
+    protected String getPOM() {
+        return "exclude-configuration-plugin-config.xml";
+    }
 }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/IncludeConfigurationMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/IncludeConfigurationMavenProjectStub.java
index 10a1623..2e9d0a5 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/IncludeConfigurationMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/IncludeConfigurationMavenProjectStub.java
@@ -24,6 +24,7 @@ import org.apache.maven.model.Model;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 
+import java.io.File;
 import java.io.FileReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -43,8 +44,7 @@ public class IncludeConfigurationMavenProjectStub
 
         try
         {
-            model = pomReader.read( new FileReader( getBasedir() +
-                "/src/test/resources/unit/include-configuration/include-configuration-plugin-config.xml" ) );
+            model = pomReader.read( new FileReader( getBasedir() + "/" + getPOM() ) );
             setModel( model );
         }
         catch ( Exception ignored )
@@ -61,7 +61,7 @@ public class IncludeConfigurationMavenProjectStub
         String basedir = getBasedir().getAbsolutePath();
         List<String> compileSourceRoots = new ArrayList<>();
         compileSourceRoots.add(
-            basedir + "/src/test/resources/unit/include-configuration/include/configuration" );
+            basedir + "/include/configuration" );
         setCompileSourceRoots( compileSourceRoots );
 
         // set the report plugins
@@ -78,4 +78,14 @@ public class IncludeConfigurationMavenProjectStub
     {
         return reportPlugins;
     }
+
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/include-configuration" );
+    }
+
+    @Override
+    protected String getPOM() {
+        return "include-configuration-plugin-config.xml";
+    }
 }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/JxrProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/JxrProjectStub.java
index 45f4b5f..7454247 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/JxrProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/JxrProjectStub.java
@@ -19,6 +19,7 @@ package org.apache.maven.plugin.jxr.stubs;
  * under the License.
  */
 
+import java.io.File;
 import java.util.Collections;
 import java.util.List;
 
@@ -31,6 +32,23 @@ import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 public abstract class JxrProjectStub
     extends MavenProjectStub
 {
+    /**
+     * @return the POM file name
+     */
+    protected abstract String getPOM();
+
+    @Override
+    public File getBasedir()
+    {
+        return new File( super.getBasedir() + "/src/test/resources/unit/" );
+    }
+
+    @Override
+    public File getFile()
+    {
+        return new File( getBasedir(), getPOM() );
+    }
+
     @Override
     public List<ArtifactRepository> getRemoteArtifactRepositories()
     {
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocDirMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocDirMavenProjectStub.java
index 0448f95..576038c 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocDirMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocDirMavenProjectStub.java
@@ -23,8 +23,8 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 
+import java.io.File;
 import java.io.FileReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -45,7 +45,7 @@ public class NoJavadocDirMavenProjectStub
         try
         {
             model = pomReader.read( new FileReader(
-                getBasedir() + "/src/test/resources/unit/nojavadocdir-test/nojavadocdir-test-plugin-config.xml" ) );
+                getBasedir() + "/" + getPOM() ) );
             setModel( model );
         }
         catch ( Exception ignored )
@@ -61,7 +61,7 @@ public class NoJavadocDirMavenProjectStub
 
         String basedir = getBasedir().getAbsolutePath();
         List<String> compileSourceRoots = new ArrayList<>();
-        compileSourceRoots.add( basedir + "/src/test/resources/unit/nojavadocdir-test/nojavadocdir/test" );
+        compileSourceRoots.add( basedir + "/nojavadocdir/test" );
         setCompileSourceRoots( compileSourceRoots );
 
         //set the report plugins
@@ -77,4 +77,14 @@ public class NoJavadocDirMavenProjectStub
     {
         return reportPlugins;
     }
+
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/nojavadocdir-test" );
+    }
+
+    @Override
+    protected String getPOM() {
+        return "nojavadocdir-test-plugin-config.xml";
+    }
 }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocLinkConfigurationMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocLinkConfigurationMavenProjectStub.java
index 47df067..418f393 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocLinkConfigurationMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/NoJavadocLinkConfigurationMavenProjectStub.java
@@ -23,7 +23,6 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 
 import java.io.File;
 import java.io.FileReader;
@@ -34,7 +33,7 @@ import java.util.List;
  * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
  */
 public class NoJavadocLinkConfigurationMavenProjectStub
-    extends MavenProjectStub
+    extends JxrProjectStub
 {
     List<ReportPlugin> reportPlugins;
 
@@ -45,8 +44,7 @@ public class NoJavadocLinkConfigurationMavenProjectStub
 
         try
         {
-            model = pomReader.read( new FileReader( getBasedir() +
-                "/src/test/resources/unit/nojavadoclink-configuration/nojavadoclink-configuration-plugin-config.xml" ) );
+            model = pomReader.read( new FileReader( getBasedir() + "/" + getPOM() ) );
             setModel( model );
         }
         catch ( Exception ignored )
@@ -63,7 +61,7 @@ public class NoJavadocLinkConfigurationMavenProjectStub
         String basedir = getBasedir().getAbsolutePath();
         List<String> compileSourceRoots = new ArrayList<>();
         compileSourceRoots.add(
-            basedir + "/src/test/resources/unit/nojavadoclink-configuration/nojavadoclink/configuration" );
+            basedir + "/nojavadoclink/configuration" );
         setCompileSourceRoots( compileSourceRoots );
 
         //set the report plugins
@@ -80,4 +78,14 @@ public class NoJavadocLinkConfigurationMavenProjectStub
     {
         return reportPlugins;
     }
+
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/nojavadoclink-configuration" );
+    }
+
+    @Override
+    protected String getPOM() {
+        return "nojavadoclink-configuration-plugin-config.xml";
+    }
 }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/PomMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/PomMavenProjectStub.java
index ba9aee7..e749720 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/PomMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/PomMavenProjectStub.java
@@ -27,13 +27,12 @@ import java.util.List;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 
 /**
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  */
 public class PomMavenProjectStub
-    extends MavenProjectStub
+    extends JxrProjectStub
 {
     private Build build;
 
@@ -44,7 +43,7 @@ public class PomMavenProjectStub
 
         try
         {
-            model = pomReader.read( new FileReader( new File( getBasedir(), "pom-test-plugin-config.xml" ) ) );
+            model = pomReader.read( new FileReader( new File( getBasedir() + "/" + getPOM() ) ) );
             setModel( model );
         }
         catch ( Exception e )
@@ -61,11 +60,11 @@ public class PomMavenProjectStub
 
         Build build = new Build();
         build.setFinalName( model.getArtifactId() );
-        build.setDirectory( super.getBasedir() + "/target/test/unit/pom-test/target" );
+        build.setDirectory( getBasedir() + "/target/test/unit/pom-test/target" );
         build.setSourceDirectory( getBasedir() + "/src/main/java" );
-        build.setOutputDirectory( super.getBasedir() + "/target/test/unit/pom-test/target/classes" );
+        build.setOutputDirectory( getBasedir() + "/target/test/unit/pom-test/target/classes" );
         build.setTestSourceDirectory( getBasedir() + "/src/test/java" );
-        build.setTestOutputDirectory( super.getBasedir() + "/target/test/unit/pom-test/target/test-classes" );
+        build.setTestOutputDirectory( getBasedir() + "/target/test/unit/pom-test/target/test-classes" );
         setBuild( build );
 
         List<String> compileSourceRoots = new ArrayList<>();
@@ -93,11 +92,13 @@ public class PomMavenProjectStub
         this.build = build;
     }
 
-    /**
-     * @see org.apache.maven.plugin.testing.stubs.MavenProjectStub#getBasedir()
-     */
-    public File getBasedir()
-    {
-        return new File( super.getBasedir() + "/src/test/resources/unit/pom-test" );
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/pom-test" );
+    }
+
+    @Override
+    protected String getPOM() {
+        return "pom-test-plugin-config.xml";
     }
 }
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/TestSourceDirMavenProjectStub.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/TestSourceDirMavenProjectStub.java
index b441285..d85fd89 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/TestSourceDirMavenProjectStub.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/stubs/TestSourceDirMavenProjectStub.java
@@ -23,6 +23,7 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 
+import java.io.File;
 import java.io.FileReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -42,7 +43,7 @@ public class TestSourceDirMavenProjectStub
         try
         {
             model = pomReader.read( new FileReader(
-                getBasedir() + "/src/test/resources/unit/testsourcedir-test/testsourcedir-test-plugin-config.xml" ) );
+                getBasedir() + "/" + getPOM() ) );
             setModel( model );
         }
         catch ( Exception ignored )
@@ -58,13 +59,22 @@ public class TestSourceDirMavenProjectStub
 
         String basedir = getBasedir().getAbsolutePath();
         List<String> compileSourceRoots = new ArrayList<>();
-        compileSourceRoots.add( basedir + "/src/test/resources/unit/testsourcedir-test" );
+        compileSourceRoots.add( basedir );
         setCompileSourceRoots( compileSourceRoots );
 
         Artifact artifact = new JxrPluginArtifactStub( getGroupId(), getArtifactId(), getVersion(), getPackaging() );
         artifact.setArtifactHandler( new DefaultArtifactHandlerStub() );
         setArtifact( artifact );
+    }
+
+    @Override
+    public File getBasedir() {
+        return new File( super.getBasedir() + "/testsourcedir-test" );
+    }
 
+    @Override
+    protected String getPOM() {
+        return "testsourcedir-test-plugin-config.xml";
     }
 
 }
diff --git a/maven-jxr/pom.xml b/maven-jxr/pom.xml
index 06a921b..a3120fa 100644
--- a/maven-jxr/pom.xml
+++ b/maven-jxr/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <groupId>org.apache.maven.jxr</groupId>
     <artifactId>jxr</artifactId>
-    <version>3.3.1-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.maven</groupId>
@@ -89,8 +89,8 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.apache.velocity</groupId>
-      <artifactId>velocity</artifactId>
-      <version>1.7</version>
+      <artifactId>velocity-engine-core</artifactId>
+      <version>2.3</version>
     </dependency>
 
     <dependency>
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
index ea2710e..17975c6 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
@@ -257,22 +257,18 @@ public class DirectoryIndexer
         if ( templateDirFile.isAbsolute() )
         {
             // the property has been overridden: need to use a FileResourceLoader
-            engine.setProperty( "resource.loader", "file" );
-            engine.setProperty( "file.resource.loader.class",
+            engine.setProperty( "resource.loaders", "file" );
+            engine.setProperty( "resource.loader.file.class",
                                 "org.apache.velocity.runtime.resource.loader.FileResourceLoader" );
-            engine.setProperty( "file.resource.loader.path", templateDirFile.toString() );
+            engine.setProperty( "resource.loader.file.path", templateDirFile.toString() );
         }
         else
         {
             // use of the default templates
-            engine.setProperty( "resource.loader", "classpath" );
-            engine.setProperty( "classpath.resource.loader.class",
+            engine.setProperty( "resource.loaders", "classpath" );
+            engine.setProperty( "resource.loader.classpath.class",
                                 "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader" );
         }
-        // avoid "unable to find resource 'VM_global_library.vm' in any resource loader."
-        engine.setProperty( "velocimacro.library", "" );
-//        engine.setProperty( Log.class.getName(), log );
-//        engine.setProperty( "runtime.log.logsystem.class", VelocityLogger.class.getName() );
     }
 
     /*
diff --git a/pom.xml b/pom.xml
index 020c227..3178557 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@ under the License.
 
   <groupId>org.apache.maven.jxr</groupId>
   <artifactId>jxr</artifactId>
-  <version>3.3.1-SNAPSHOT</version>
+  <version>4.0.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>Maven JXR Parent</name>
@@ -64,12 +64,12 @@ under the License.
 
   <properties>
     <javaVersion>8</javaVersion>
-    <sitePluginVersion>3.12.1</sitePluginVersion>
     <slf4jVersion>1.7.36</slf4jVersion>
+    <sitePluginVersion>4.0.0-M5</sitePluginVersion>
     <javadocPluginVersion>3.4.1</javadocPluginVersion>
     <maven.site.path>jxr-archives/jxr-LATEST</maven.site.path>
     <checkstyle.violation.ignore>None</checkstyle.violation.ignore>
-    <project.build.outputTimestamp>2022-08-16T10:28:45Z</project.build.outputTimestamp>
+    <project.build.outputTimestamp>2022-12-02T21:53:00Z</project.build.outputTimestamp>
   </properties>
 
   <modules>