You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/10/01 06:08:51 UTC

(maven-archetype) 01/01: Replace plexus-velocity's VelocityComponent with a plain VelocityEngine

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

slachiewicz pushed a commit to branch agent/archetype-velocity-engine
in repository https://gitbox.apache.org/repos/asf/maven-archetype.git

commit fa0b0aeba9521a7e63fcd8fd965b9f89fde9c1ef
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Thu Oct 1 08:07:18 2026 +0200

    Replace plexus-velocity's VelocityComponent with a plain VelocityEngine
---
 archetype-common/pom.xml                           |  4 --
 ...figurator.java => ArchetypeVelocityEngine.java} | 46 ++++++++++++++++++----
 .../DefaultFilesetArchetypeGenerator.java          |  6 +--
 .../maven/archetype/old/DefaultOldArchetype.java   |  6 +--
 .../apache/maven/archetype/old/ArchetypeTest.java  |  4 +-
 maven-archetype-plugin/pom.xml                     |  4 --
 .../DefaultArchetypeGenerationConfigurator.java    |  6 +--
 pom.xml                                            |  5 ---
 8 files changed, 49 insertions(+), 32 deletions(-)

diff --git a/archetype-common/pom.xml b/archetype-common/pom.xml
index ff92c117..648e908d 100644
--- a/archetype-common/pom.xml
+++ b/archetype-common/pom.xml
@@ -118,10 +118,6 @@
       <artifactId>commons-collections4</artifactId>
       <version>4.6.0</version>
     </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-velocity</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-xml</artifactId>
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/VelocityConfigurator.java b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeVelocityEngine.java
similarity index 52%
rename from archetype-common/src/main/java/org/apache/maven/archetype/VelocityConfigurator.java
rename to archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeVelocityEngine.java
index 899f0f6b..8b7b0a7b 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/VelocityConfigurator.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeVelocityEngine.java
@@ -23,20 +23,41 @@ import javax.inject.Singleton;
 
 import java.util.Properties;
 
-import org.codehaus.plexus.velocity.VelocityComponentConfigurator;
+import org.apache.velocity.app.VelocityEngine;
 
 /**
- * Velocity configurator. Used by {@link org.codehaus.plexus.velocity.VelocityComponent}
- * <p/>
- * Preserve compatibility of Velocity 2.2 with Velocity 1.x
- * <a href="https://velocity.apache.org/engine/2.3/upgrading.html">Velocity Upgrading</a>
+ * Holds the single {@link VelocityEngine} used to process archetype templates.
+ * <p>
+ * Replaces {@code org.codehaus.plexus.velocity.VelocityComponent}; the engine is configured with the same
+ * properties that component sets, followed by the settings that preserve compatibility of Velocity 2.x with
+ * Velocity 1.x
+ * (<a href="https://velocity.apache.org/engine/2.3/upgrading.html">Velocity Upgrading</a>).
  */
 @Named
 @Singleton
-class VelocityConfigurator implements VelocityComponentConfigurator {
+public class ArchetypeVelocityEngine {
 
-    @Override
-    public void configure(Properties properties) {
+    private final VelocityEngine engine;
+
+    public ArchetypeVelocityEngine() {
+        Properties properties = new Properties();
+
+        // Defaults formerly applied by plexus-velocity's DefaultVelocityComponent
+        properties.setProperty("resource.loaders", "classpath,file");
+        properties.setProperty(
+                "resource.loader.classpath.class",
+                "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
+        properties.setProperty(
+                "resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
+        properties.setProperty("resource.loader.file.path", "");
+        properties.setProperty("runtime.log.log_invalid_references", "false");
+        properties.setProperty("resource.manager.log_when_found", "false");
+        properties.setProperty(
+                "event_handler.include.class", "org.apache.velocity.app.event.implement.IncludeRelativePath");
+        properties.setProperty("velocimacro.inline.replace_global", "true");
+        properties.setProperty("parser.space_gobbling", "bc");
+
+        // Archetype settings, formerly in VelocityConfigurator
 
         // # No automatic conversion of methods arguments
         properties.put("introspector.conversion_handler.class", "none");
@@ -61,5 +82,14 @@ class VelocityConfigurator implements VelocityComponentConfigurator {
 
         // # When using an invalid reference handler, also include tested references (since 2.2)
         properties.put("event_handler.invalid_references.tested", true);
+
+        VelocityEngine velocityEngine = new VelocityEngine();
+        velocityEngine.setProperties(properties);
+        velocityEngine.init();
+        this.engine = velocityEngine;
+    }
+
+    public VelocityEngine getEngine() {
+        return engine;
     }
 }
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java b/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
index 3e59bd43..778c2913 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
@@ -45,6 +45,7 @@ import java.util.zip.ZipFile;
 import groovy.lang.Binding;
 import groovy.lang.GroovyShell;
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeVelocityEngine;
 import org.apache.maven.archetype.common.ArchetypeArtifactManager;
 import org.apache.maven.archetype.common.ArchetypeFilesResolver;
 import org.apache.maven.archetype.common.Constants;
@@ -67,7 +68,6 @@ import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.codehaus.plexus.velocity.VelocityComponent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
@@ -83,14 +83,14 @@ public class DefaultFilesetArchetypeGenerator implements FilesetArchetypeGenerat
 
     private PomManager pomManager;
 
-    private VelocityComponent velocity;
+    private ArchetypeVelocityEngine velocity;
 
     @Inject
     public DefaultFilesetArchetypeGenerator(
             ArchetypeArtifactManager archetypeArtifactManager,
             ArchetypeFilesResolver archetypeFilesResolver,
             PomManager pomManager,
-            VelocityComponent velocity) {
+            ArchetypeVelocityEngine velocity) {
         this.archetypeArtifactManager = archetypeArtifactManager;
         this.archetypeFilesResolver = archetypeFilesResolver;
         this.pomManager = pomManager;
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java b/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java
index 040d2f24..884f553d 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java
@@ -41,6 +41,7 @@ import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeVelocityEngine;
 import org.apache.maven.archetype.common.ArchetypeArtifactManager;
 import org.apache.maven.archetype.common.Constants;
 import org.apache.maven.archetype.common.util.PomUtils;
@@ -63,7 +64,6 @@ import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.XmlStreamReader;
 import org.codehaus.plexus.util.xml.XmlStreamWriter;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.codehaus.plexus.velocity.VelocityComponent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
@@ -88,12 +88,12 @@ public class DefaultOldArchetype implements OldArchetype {
     // Components
     // ----------------------------------------------------------------------
 
-    private VelocityComponent velocity;
+    private ArchetypeVelocityEngine velocity;
 
     private ArchetypeArtifactManager archetypeArtifactManager;
 
     @Inject
-    public DefaultOldArchetype(VelocityComponent velocity, ArchetypeArtifactManager archetypeArtifactManager) {
+    public DefaultOldArchetype(ArchetypeVelocityEngine velocity, ArchetypeArtifactManager archetypeArtifactManager) {
         this.archetypeArtifactManager = archetypeArtifactManager;
         this.velocity = velocity;
     }
diff --git a/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java b/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java
index 06b8ac0b..cb0ea416 100644
--- a/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java
+++ b/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java
@@ -34,6 +34,7 @@ import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeVelocityEngine;
 import org.apache.maven.archetype.exception.InvalidPackaging;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
@@ -41,7 +42,6 @@ import org.apache.velocity.VelocityContext;
 import org.apache.velocity.context.Context;
 import org.codehaus.plexus.testing.PlexusTest;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.codehaus.plexus.velocity.VelocityComponent;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
@@ -77,7 +77,7 @@ public class ArchetypeTest {
     private RepositorySystem repositorySystem;
 
     @Inject
-    private VelocityComponent velocity;
+    private ArchetypeVelocityEngine velocity;
 
     @Test
     public void testArchetype() throws Exception {
diff --git a/maven-archetype-plugin/pom.xml b/maven-archetype-plugin/pom.xml
index dab33f5a..449b9c24 100644
--- a/maven-archetype-plugin/pom.xml
+++ b/maven-archetype-plugin/pom.xml
@@ -106,10 +106,6 @@
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-xml</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-velocity</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-interactivity-api</artifactId>
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeGenerationConfigurator.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeGenerationConfigurator.java
index ce667d1f..297bf7b6 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeGenerationConfigurator.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeGenerationConfigurator.java
@@ -37,6 +37,7 @@ import java.util.Properties;
 import java.util.Set;
 
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeVelocityEngine;
 import org.apache.maven.archetype.common.ArchetypeArtifactManager;
 import org.apache.maven.archetype.common.Constants;
 import org.apache.maven.archetype.exception.ArchetypeGenerationConfigurationFailure;
@@ -58,7 +59,6 @@ import org.apache.velocity.runtime.parser.node.SimpleNode;
 import org.apache.velocity.runtime.visitor.BaseVisitor;
 import org.codehaus.plexus.components.interactivity.PrompterException;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.velocity.VelocityComponent;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.repository.RemoteRepository;
@@ -78,7 +78,7 @@ public class DefaultArchetypeGenerationConfigurator implements ArchetypeGenerati
 
     private ArchetypeGenerationQueryer archetypeGenerationQueryer;
 
-    private VelocityComponent velocity;
+    private ArchetypeVelocityEngine velocity;
 
     private RepositorySystem repositorySystem;
 
@@ -87,7 +87,7 @@ public class DefaultArchetypeGenerationConfigurator implements ArchetypeGenerati
             ArchetypeArtifactManager archetypeArtifactManager,
             ArchetypeFactory archetypeFactory,
             ArchetypeGenerationQueryer archetypeGenerationQueryer,
-            VelocityComponent velocity,
+            ArchetypeVelocityEngine velocity,
             RepositorySystem repositorySystem) {
         this.archetypeArtifactManager = archetypeArtifactManager;
         this.archetypeFactory = archetypeFactory;
diff --git a/pom.xml b/pom.xml
index 8c63698f..cf82f963 100644
--- a/pom.xml
+++ b/pom.xml
@@ -167,11 +167,6 @@
         <artifactId>plexus-interactivity-api</artifactId>
         <version>1.6.0</version>
       </dependency>
-      <dependency>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-velocity</artifactId>
-        <version>2.4.0</version>
-      </dependency>
       <dependency>
         <groupId>org.jdom</groupId>
         <artifactId>jdom2</artifactId>