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>