diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
index 9bba301..a583d64 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
@@ -26,12 +26,13 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.eclipse.aether.RepositorySystemSession;
 
 /** @author Jason van Zyl */
 public class ArchetypeCreationRequest {
     private ProjectBuildingRequest projectBuildingRequest;
 
-    private ArtifactRepository localRepository;
+    private RepositorySystemSession repositorySystemSession;
 
     private MavenProject project;
 
@@ -69,13 +70,28 @@
         return this;
     }
 
-    public ArtifactRepository getLocalRepository() {
-        return localRepository;
+    /**
+     * @since TBD
+     */
+    public RepositorySystemSession getRepositorySystemSession() {
+        return repositorySystemSession;
     }
 
-    public ArchetypeCreationRequest setLocalRepository(ArtifactRepository localRepository) {
-        this.localRepository = localRepository;
+    /**
+     * @since TBD
+     */
+    public ArchetypeCreationRequest setRepositorySystemSession(RepositorySystemSession repositorySystemSession) {
+        this.repositorySystemSession = repositorySystemSession;
+        return this;
+    }
 
+    @Deprecated
+    public ArtifactRepository getLocalRepository() {
+        return null;
+    }
+
+    @Deprecated
+    public ArchetypeCreationRequest setLocalRepository(ArtifactRepository localRepository) {
         return this;
     }
 
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
index 891bb69..de3e7fc 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
@@ -29,11 +29,17 @@
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
 import org.apache.maven.wagon.events.TransferListener;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.RemoteRepository;
 
 /** @author Jason van Zyl */
 public class ArchetypeGenerationRequest {
     private ProjectBuildingRequest projectBuildingRequest;
 
+    private RepositorySystemSession repositorySystemSession;
+
+    private List<RemoteRepository> remoteRepositories;
+
     private boolean offline;
 
     private boolean interactiveMode;
@@ -44,10 +50,6 @@
 
     private String outputDirectory;
 
-    private ArtifactRepository localRepository;
-
-    private List<ArtifactRepository> remoteArtifactRepositories;
-
     private Proxy activeProxy;
 
     private List<Server> servers = new ArrayList<>();
@@ -112,6 +114,36 @@
         return this;
     }
 
+    /**
+     * @since TBD
+     */
+    public RepositorySystemSession getRepositorySystemSession() {
+        return repositorySystemSession;
+    }
+
+    /**
+     * @since TBD
+     */
+    public ArchetypeGenerationRequest setRepositorySystemSession(RepositorySystemSession repositorySystemSession) {
+        this.repositorySystemSession = repositorySystemSession;
+        return this;
+    }
+
+    /**
+     * @since TBD
+     */
+    public List<RemoteRepository> getRemoteRepositories() {
+        return remoteRepositories;
+    }
+
+    /**
+     * @since TBD
+     */
+    public ArchetypeGenerationRequest setRemoteRepositories(List<RemoteRepository> remoteRepositories) {
+        this.remoteRepositories = remoteRepositories;
+        return this;
+    }
+
     public String getArchetypeGroupId() {
         return archetypeGroupId;
     }
@@ -235,13 +267,13 @@
         return this;
     }
 
+    @Deprecated
     public ArtifactRepository getLocalRepository() {
-        return localRepository;
+        return null;
     }
 
+    @Deprecated
     public ArchetypeGenerationRequest setLocalRepository(ArtifactRepository localRepository) {
-        this.localRepository = localRepository;
-
         return this;
     }
 
@@ -333,15 +365,14 @@
         return servers;
     }
 
+    @Deprecated
     public List<ArtifactRepository> getRemoteArtifactRepositories() {
-        return remoteArtifactRepositories;
+        return null;
     }
 
-    @SuppressWarnings("checkstyle:linelength")
+    @Deprecated
     public ArchetypeGenerationRequest setRemoteArtifactRepositories(
             List<ArtifactRepository> remoteArtifactRepositories) {
-        this.remoteArtifactRepositories = remoteArtifactRepositories;
-
         return this;
     }
 
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
index f04282e..40a111b 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
@@ -290,9 +290,10 @@
             internalRequest.setPomFile(archetypePomFile);
             internalRequest.setUserSettingsFile(request.getSettingsFile());
             internalRequest.setGoals(Collections.singletonList(request.getPostPhase()));
-            if (request.getLocalRepository() != null) {
-                internalRequest.setLocalRepositoryDirectory(
-                        new File(request.getLocalRepository().getBasedir()));
+            if (request.getRepositorySystemSession() != null) {
+                internalRequest.setLocalRepositoryDirectory(request.getRepositorySystemSession()
+                        .getLocalRepository()
+                        .getBasedir());
             }
 
             String httpsProtocols = System.getProperty("https.protocols");
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/downloader/DefaultDownloader.java b/archetype-common/src/main/java/org/apache/maven/archetype/downloader/DefaultDownloader.java
index 02285df..101d2ff 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/downloader/DefaultDownloader.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/downloader/DefaultDownloader.java
@@ -59,8 +59,8 @@
             throws DownloadException, DownloadNotFoundException {
         DefaultArtifact artifact = new DefaultArtifact(groupId, artifactId, "", "jar", version);
         try {
-            ArtifactRequest request =
-                    new ArtifactRequest(artifact, RepositoryUtils.toRepos(remoteRepositories), "archetype");
+            ArtifactRequest request = new ArtifactRequest(
+                    artifact, RepositoryUtils.toRepos(buildingRequest.getRemoteRepositories()), "archetype");
             ArtifactResult result = repositorySystem.resolveArtifact(buildingRequest.getRepositorySession(), request);
             return result.getArtifact().getFile();
         } catch (ArtifactResolutionException e) {
diff --git a/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/profiles.xml b/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/profiles.xml
index 834d9c7..209b4c3 100644
--- a/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/profiles.xml
+++ b/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/profiles.xml
@@ -2,6 +2,7 @@
 artifactId=${artifactId}
 version=${version}
 package=${package}
+packageInPathFormat=${packageInPathFormat}
 propertyWithoutDefault1=${propertyWithoutDefault1}
 propertyWithoutDefault2=${propertyWithoutDefault2}
 propertyWithoutDefault3=${propertyWithoutDefault3}
diff --git a/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java b/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__propertyWithDefault1__.java
similarity index 100%
rename from archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java
rename to archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__propertyWithDefault1__.java
diff --git a/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/M___artifactId_____property_underscored_1__Test__property_underscored-2____property-with-default-1__.java b/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/M___artifactId_____property_underscored_1__Test__property_underscored-2____property-with-default-1__.java
deleted file mode 100644
index 9077927..0000000
--- a/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/M___artifactId_____property_underscored_1__Test__property_underscored-2____property-with-default-1__.java
+++ /dev/null
@@ -1,13 +0,0 @@
-groupId=${groupId}
-artifactId=${artifactId}
-version=${version}
-package=${package}
-packageInPathFormat=${packageInPathFormat}
-propertyWithoutDefault1=${propertyWithoutDefault1}
-propertyWithoutDefault2=${propertyWithoutDefault2}
-propertyWithoutDefault3=${propertyWithoutDefault3}
-propertyWithoutDefault4=${propertyWithoutDefault4}
-propertyWithDefault1=${propertyWithDefault1}
-propertyWithDefault2=${propertyWithDefault2}
-propertyWithDefault3=${propertyWithDefault3}
-propertyWithDefault4=${propertyWithDefault4}
\ No newline at end of file
diff --git a/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java b/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/M___artifactId_____property_underscored_1__Test__property_underscored-2____propertyWithDefault1__.java
similarity index 100%
copy from archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java
copy to archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/M___artifactId_____property_underscored_1__Test__property_underscored-2____propertyWithDefault1__.java
diff --git a/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java b/archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__propertyWithDefault2__.java
similarity index 100%
rename from archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java
rename to archetype-common/src/test/archetypes/fileset-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__propertyWithDefault2__.java
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__propertyWithDefault1__.java
similarity index 100%
rename from archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java
rename to archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__propertyWithDefault1__.java
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__propertyWithDefault2__.java
similarity index 100%
rename from archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java
rename to archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__propertyWithDefault2__.java
diff --git a/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/apt/test.apt b/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/apt/test.apt
index 9077927..3cf77fd 100644
--- a/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/apt/test.apt
+++ b/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/apt/test.apt
@@ -2,7 +2,6 @@
 artifactId=${artifactId}
 version=${version}
 package=${package}
-packageInPathFormat=${packageInPathFormat}
 propertyWithoutDefault1=${propertyWithoutDefault1}
 propertyWithoutDefault2=${propertyWithoutDefault2}
 propertyWithoutDefault3=${propertyWithoutDefault3}
diff --git a/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/site.xml b/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/site.xml
index 9077927..3cf77fd 100644
--- a/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/site.xml
+++ b/archetype-common/src/test/archetypes/site-1.0/archetype-resources/src/site/site.xml
@@ -2,7 +2,6 @@
 artifactId=${artifactId}
 version=${version}
 package=${package}
-packageInPathFormat=${packageInPathFormat}
 propertyWithoutDefault1=${propertyWithoutDefault1}
 propertyWithoutDefault2=${propertyWithoutDefault2}
 propertyWithoutDefault3=${propertyWithoutDefault3}
diff --git a/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java b/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java
index e6f32e4..1ab717f 100644
--- a/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java
+++ b/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java
@@ -24,6 +24,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
+import java.util.Collections;
 import java.util.Properties;
 
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
@@ -42,6 +43,7 @@
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
 import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.RemoteRepository;
 
 public class DefaultArchetypeGeneratorTest extends AbstractMojoTestCase {
     // archetypes prepared by antrun execution (see pom.xml) from src/test/archetypes
@@ -407,7 +409,7 @@
         assertTrue(
                 "Exception not correct",
                 result.getCause().getMessage().startsWith("Archetype archetypes:basic:1.0 is not configured")
-                        && result.getCause().getMessage().endsWith("Property property-without-default-4 is missing."));
+                        && result.getCause().getMessage().endsWith("Property propertyWithoutDefault4 is missing."));
     }
 
     public void testGenerateArchetypeWithPostScriptIncluded() throws Exception {
@@ -526,6 +528,8 @@
         projectDirectory = new File(outputDirectory, "file-value");
 
         ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
+        request.setRemoteRepositories(Collections.singletonList(new RemoteRepository.Builder("central", "default", "\"https://repo.maven.apache.org/maven2\"").build()));
+
         request.setLocalRepository(localRepository);
         request.setArchetypeRepository(remoteRepository);
         request.setOutputDirectory(outputDirectory);
@@ -558,14 +562,14 @@
         assertEquals("file-value", properties.getProperty("artifactId"));
         assertEquals("file-value", properties.getProperty("version"));
         assertEquals("file.value.package", properties.getProperty("package"));
-        assertEquals("file-value", properties.getProperty("property-with-default-1"));
-        assertEquals("file-value", properties.getProperty("property-with-default-2"));
-        assertEquals("file-value", properties.getProperty("property-with-default-3"));
-        assertEquals("file-value", properties.getProperty("property-with-default-4"));
-        assertEquals("file-value", properties.getProperty("property-without-default-1"));
-        assertEquals("file-value", properties.getProperty("property-without-default-2"));
-        assertEquals("file-value", properties.getProperty("property-without-default-3"));
-        assertEquals("file-value", properties.getProperty("property-without-default-4"));
+        assertEquals("file-value", properties.getProperty("propertyWithDefault1"));
+        assertEquals("file-value", properties.getProperty("propertyWithDefault2"));
+        assertEquals("file-value", properties.getProperty("propertyWithDefault3"));
+        assertEquals("file-value", properties.getProperty("propertyWithDefault4"));
+        assertEquals("file-value", properties.getProperty("propertyWithoutDefault1"));
+        assertEquals("file-value", properties.getProperty("propertyWithoutDefault2"));
+        assertEquals("file-value", properties.getProperty("propertyWithoutDefault3"));
+        assertEquals("file-value", properties.getProperty("propertyWithoutDefault4"));
     }
 
     private void assertTemplateContentGeneratedWithFileSetArchetype(String template, String artifactId)
diff --git a/archetype-common/src/test/java/org/apache/maven/archetype/test/InternalCatalogArchetypesVerificationTest.java b/archetype-common/src/test/java/org/apache/maven/archetype/test/InternalCatalogArchetypesVerificationTest.java
index 81c0a73..1966479 100644
--- a/archetype-common/src/test/java/org/apache/maven/archetype/test/InternalCatalogArchetypesVerificationTest.java
+++ b/archetype-common/src/test/java/org/apache/maven/archetype/test/InternalCatalogArchetypesVerificationTest.java
@@ -19,18 +19,18 @@
 package org.apache.maven.archetype.test;
 
 import java.io.File;
+import java.util.Collections;
 
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
 import org.apache.maven.archetype.ArchetypeGenerationResult;
 import org.apache.maven.archetype.ArchetypeManager;
 import org.apache.maven.archetype.catalog.Archetype;
 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.MavenArtifactRepository;
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
@@ -52,12 +52,11 @@
     }
 
     public void testInternalCatalog() throws Exception {
-        ArtifactRepository localRepository = createRepository(
-                new File(getBasedir(), "target/test-classes/repositories/local")
-                        .toURI()
-                        .toURL()
-                        .toExternalForm(),
-                "local-repo");
+        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
+        session.setLocalRepositoryManager(new SimpleLocalRepositoryManagerFactory()
+                .newInstance(
+                        session,
+                        new LocalRepository(new File(getBasedir(), "target/test-classes/repositories/local"))));
 
         File outputDirectory = new File(getBasedir(), "target/internal-archetypes-projects");
         outputDirectory.mkdirs();
@@ -82,18 +81,21 @@
             }
 
             ArchetypeGenerationRequest request = new ArchetypeGenerationRequest(ar)
+                    .setRepositorySystemSession(session)
                     .setGroupId("org.apache.maven.archetype.test")
                     .setArtifactId("archetype" + count)
                     .setVersion("1.0-SNAPSHOT")
                     .setPackage("com.acme")
-                    .setOutputDirectory(outputDirectory.getPath())
-                    .setLocalRepository(localRepository);
+                    .setOutputDirectory(outputDirectory.getPath());
 
             ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
-            DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
-            repositorySession.setLocalRepositoryManager(new SimpleLocalRepositoryManagerFactory()
-                    .newInstance(repositorySession, new LocalRepository(localRepository.getBasedir())));
-            buildingRequest.setRepositorySession(repositorySession);
+            buildingRequest.setRepositorySession(session);
+
+            MavenArtifactRepository central = new MavenArtifactRepository();
+            central.setId("central");
+            central.setUrl(CENTRAL);
+            central.setLayout(new DefaultRepositoryLayout());
+            buildingRequest.setRemoteRepositories(Collections.singletonList(central));
             request.setProjectBuildingRequest(buildingRequest);
 
             ArchetypeGenerationResult generationResult = archetype.generateProjectFromArchetype(request);
@@ -103,19 +105,4 @@
             count++;
         }
     }
-
-    private ArtifactRepository createRepository(String url, String repositoryId) {
-        String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
-
-        String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
-
-        ArtifactRepositoryPolicy snapshotsPolicy =
-                new ArtifactRepositoryPolicy(true, updatePolicyFlag, checksumPolicyFlag);
-
-        ArtifactRepositoryPolicy releasesPolicy =
-                new ArtifactRepositoryPolicy(true, updatePolicyFlag, checksumPolicyFlag);
-
-        return new MavenArtifactRepository(
-                repositoryId, url, new DefaultRepositoryLayout(), snapshotsPolicy, releasesPolicy);
-    }
 }
diff --git a/archetype-common/src/test/resources/projects/generate-10/archetype.properties.sample b/archetype-common/src/test/resources/projects/generate-10/archetype.properties.sample
index 616fd78..440efb2 100644
--- a/archetype-common/src/test/resources/projects/generate-10/archetype.properties.sample
+++ b/archetype-common/src/test/resources/projects/generate-10/archetype.properties.sample
@@ -24,11 +24,11 @@
 artifactId=file-value
 version=file-value
 package=file.value.package
-property-without-default-1=file-value
-property-without-default-2=file-value
-property-without-default-3=file-value
-property-without-default-4=file-value
-property-with-default-1=file-value
-property-with-default-2=file-value
-property-with-default-3=file-value
-property-with-default-4=file-value
+propertyWithoutDefault1=file-value
+propertyWithoutDefault2=file-value
+propertyWithoutDefault3=file-value
+propertyWithoutDefault4=file-value
+propertyWithDefault1=file-value
+propertyWithDefault2=file-value
+propertyWithDefault3=file-value
+propertyWithDefault4=file-value
diff --git a/archetype-common/src/test/resources/projects/generate-12/archetype.properties.sample b/archetype-common/src/test/resources/projects/generate-12/archetype.properties.sample
index f59f773..fa9e45a 100644
--- a/archetype-common/src/test/resources/projects/generate-12/archetype.properties.sample
+++ b/archetype-common/src/test/resources/projects/generate-12/archetype.properties.sample
@@ -24,13 +24,13 @@
 artifactId=file-value
 version=file-value
 package=file.value.package
-property-without-default-1=file-value
-property-without-default-2=file-value
-property-without-default-3=file-value
-property-without-default-4=file-value
-property-with-default-1=file-value
-property-with-default-2=file-value
-property-with-default-3=file-value
-property-with-default-4=file-value
+propertyWithoutDefault1=file-value
+propertyWithoutDefault2=file-value
+propertyWithoutDefault3=file-value
+propertyWithoutDefault4=file-value
+propertyWithDefault1=file-value
+propertyWithDefault2=file-value
+propertyWithDefault3=file-value
+propertyWithDefault4=file-value
 property_underscored_1=prop1
 property_underscored-2=prop2
diff --git a/archetype-common/src/test/resources/projects/generate-4/archetype.properties.sample b/archetype-common/src/test/resources/projects/generate-4/archetype.properties.sample
index b59538e..886000c 100644
--- a/archetype-common/src/test/resources/projects/generate-4/archetype.properties.sample
+++ b/archetype-common/src/test/resources/projects/generate-4/archetype.properties.sample
@@ -24,11 +24,11 @@
 artifactId=file-value
 version=file-value
 package=file.value.package
-property-without-default-1=file-value
-property-without-default-2=file-value
-property-without-default-3=file-value
-property-without-default-4=file-value
-property-with-default-1=file-value
-property-with-default-2=file-value
-property-with-default-3=file-value
-property-with-default-4=file-value
+propertyWithoutDefault1=file-value
+propertyWithoutDefault2=file-value
+propertyWithoutDefault3=file-value
+propertyWithoutDefault4=file-value
+propertyWithDefault1=file-value
+propertyWithDefault2=file-value
+propertyWithDefault3=file-value
+propertyWithDefault4=file-value
diff --git a/archetype-common/src/test/resources/projects/generate-5/archetype.properties.sample b/archetype-common/src/test/resources/projects/generate-5/archetype.properties.sample
index b59538e..886000c 100644
--- a/archetype-common/src/test/resources/projects/generate-5/archetype.properties.sample
+++ b/archetype-common/src/test/resources/projects/generate-5/archetype.properties.sample
@@ -24,11 +24,11 @@
 artifactId=file-value
 version=file-value
 package=file.value.package
-property-without-default-1=file-value
-property-without-default-2=file-value
-property-without-default-3=file-value
-property-without-default-4=file-value
-property-with-default-1=file-value
-property-with-default-2=file-value
-property-with-default-3=file-value
-property-with-default-4=file-value
+propertyWithoutDefault1=file-value
+propertyWithoutDefault2=file-value
+propertyWithoutDefault3=file-value
+propertyWithoutDefault4=file-value
+propertyWithDefault1=file-value
+propertyWithDefault2=file-value
+propertyWithDefault3=file-value
+propertyWithDefault4=file-value
diff --git a/archetype-common/src/test/resources/projects/generate-7/archetype.properties.sample b/archetype-common/src/test/resources/projects/generate-7/archetype.properties.sample
index b2bed95..807f882 100644
--- a/archetype-common/src/test/resources/projects/generate-7/archetype.properties.sample
+++ b/archetype-common/src/test/resources/projects/generate-7/archetype.properties.sample
@@ -24,11 +24,11 @@
 artifactId=file-value
 version=file-value
 package=file.value.package
-property-without-default-1=file-value
-property-without-default-2=file-value
-property-without-default-3=file-value
-property-without-default-4=file-value
-property-with-default-1=file-value
-property-with-default-2=file-value
-property-with-default-3=file-value
-property-with-default-4=file-value
+propertyWithoutDefault1=file-value
+propertyWithoutDefault2=file-value
+propertyWithoutDefault3=file-value
+propertyWithoutDefault4=file-value
+propertyWithDefault1=file-value
+propertyWithDefault2=file-value
+propertyWithDefault3=file-value
+propertyWithDefault4=file-value
diff --git a/archetype-common/src/test/resources/projects/generate-8/archetype.properties.sample b/archetype-common/src/test/resources/projects/generate-8/archetype.properties.sample
index b2bed95..807f882 100644
--- a/archetype-common/src/test/resources/projects/generate-8/archetype.properties.sample
+++ b/archetype-common/src/test/resources/projects/generate-8/archetype.properties.sample
@@ -24,11 +24,11 @@
 artifactId=file-value
 version=file-value
 package=file.value.package
-property-without-default-1=file-value
-property-without-default-2=file-value
-property-without-default-3=file-value
-property-without-default-4=file-value
-property-with-default-1=file-value
-property-with-default-2=file-value
-property-with-default-3=file-value
-property-with-default-4=file-value
+propertyWithoutDefault1=file-value
+propertyWithoutDefault2=file-value
+propertyWithoutDefault3=file-value
+propertyWithoutDefault4=file-value
+propertyWithDefault1=file-value
+propertyWithDefault2=file-value
+propertyWithDefault3=file-value
+propertyWithDefault4=file-value
diff --git a/archetype-common/src/test/resources/projects/generate-9/archetype.properties.sample b/archetype-common/src/test/resources/projects/generate-9/archetype.properties.sample
index b2bed95..807f882 100644
--- a/archetype-common/src/test/resources/projects/generate-9/archetype.properties.sample
+++ b/archetype-common/src/test/resources/projects/generate-9/archetype.properties.sample
@@ -24,11 +24,11 @@
 artifactId=file-value
 version=file-value
 package=file.value.package
-property-without-default-1=file-value
-property-without-default-2=file-value
-property-without-default-3=file-value
-property-without-default-4=file-value
-property-with-default-1=file-value
-property-with-default-2=file-value
-property-with-default-3=file-value
-property-with-default-4=file-value
+propertyWithoutDefault1=file-value
+propertyWithoutDefault2=file-value
+propertyWithoutDefault3=file-value
+propertyWithoutDefault4=file-value
+propertyWithDefault1=file-value
+propertyWithDefault2=file-value
+propertyWithDefault3=file-value
+propertyWithDefault4=file-value
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
index f82730c..f817fa4 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
@@ -20,7 +20,6 @@
 
 import java.io.File;
 import java.util.Arrays;
-import java.util.List;
 import java.util.Properties;
 
 import org.apache.commons.lang3.StringUtils;
@@ -29,7 +28,6 @@
 import org.apache.maven.archetype.ArchetypeManager;
 import org.apache.maven.archetype.ui.generation.ArchetypeGenerationConfigurator;
 import org.apache.maven.archetype.ui.generation.ArchetypeSelector;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.ContextEnabled;
@@ -40,6 +38,7 @@
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.invoker.DefaultInvocationRequest;
 import org.apache.maven.shared.invoker.InvocationRequest;
 import org.apache.maven.shared.invoker.InvocationResult;
@@ -124,18 +123,6 @@
     private Boolean askForDefaultPropertyValues;
 
     /**
-     * Local Maven repository.
-     */
-    @Parameter(defaultValue = "${localRepository}", readonly = true, required = true)
-    private ArtifactRepository localRepository;
-
-    /**
-     * List of remote repositories used by the resolver.
-     */
-    @Parameter(defaultValue = "${project.remoteArtifactRepositories}", readonly = true, required = true)
-    private List<ArtifactRepository> remoteArtifactRepositories;
-
-    /**
      * User settings used to check the interactiveMode.
      */
     @Parameter(property = "interactiveMode", defaultValue = "${settings.interactiveMode}", required = true)
@@ -144,6 +131,9 @@
     @Parameter(defaultValue = "${basedir}", property = "outputDirectory")
     private File outputDirectory;
 
+    @Parameter(defaultValue = "${project}", readonly = true, required = true)
+    private MavenProject project;
+
     @Parameter(defaultValue = "${session}", readonly = true)
     private MavenSession session;
 
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/FileLogger.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/FileLogger.java
index 95f61fd..ccce09b 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/FileLogger.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/FileLogger.java
@@ -68,6 +68,6 @@
      * @throws java.io.IOException If the output file could not be created.
      */
     FileLogger(File outputFile, Log log) throws IOException {
-        super(outputFile, log);
+        super(outputFile, log::info);
     }
 }
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java
index a821ef9..0c5c7c2 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/IntegrationTestMojo.java
@@ -44,7 +44,6 @@
 import org.apache.maven.archetype.common.Constants;
 import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
 import org.apache.maven.archetype.generator.ArchetypeGenerator;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -52,9 +51,7 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
 import org.apache.maven.shared.invoker.DefaultInvocationRequest;
@@ -62,11 +59,8 @@
 import org.apache.maven.shared.invoker.InvocationResult;
 import org.apache.maven.shared.invoker.Invoker;
 import org.apache.maven.shared.invoker.MavenInvocationException;
-import org.apache.maven.shared.scriptinterpreter.RunFailureException;
+import org.apache.maven.shared.scriptinterpreter.ScriptException;
 import org.apache.maven.shared.scriptinterpreter.ScriptRunner;
-import org.apache.maven.shared.transfer.artifact.DefaultArtifactCoordinate;
-import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
-import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.InterpolationFilterReader;
@@ -74,6 +68,11 @@
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.WriterFactory;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.ArtifactResolutionException;
+import org.eclipse.aether.resolution.ArtifactResult;
 
 /**
  * <p>Execute the archetype integration tests, consisting in generating projects from the current archetype and optionally
@@ -142,13 +141,7 @@
     private Invoker invoker;
 
     @Component
-    private ArtifactResolver artifactResolver;
-
-    @Parameter(defaultValue = "${project.remoteArtifactRepositories}", readonly = true, required = true)
-    protected List<ArtifactRepository> remoteRepositories;
-
-    @Parameter(defaultValue = "${localRepository}", readonly = true, required = true)
-    protected ArtifactRepository localRepository;
+    private RepositorySystem repositorySystem;
 
     /**
      * The archetype project to execute the integration tests on.
@@ -546,7 +539,7 @@
         File archetypeFile;
         try {
             archetypeFile = getArchetypeFile(groupId, artifactId, version);
-        } catch (ArtifactResolverException e) {
+        } catch (ArtifactResolutionException e) {
             throw new MojoExecutionException("Could not resolve archetype artifact ", e);
         }
         Properties archetypeProperties = getProperties(archetypePomPropertiesFile);
@@ -556,24 +549,13 @@
         return new File(buildFolder, request.getArtifactId());
     }
 
-    private File getArchetypeFile(String groupId, String artifactId, String version) throws ArtifactResolverException {
-        ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
-        if (localRepository != null) {
-            buildingRequest = buildingRequest.setLocalRepository(localRepository);
-        }
-        if (remoteRepositories != null && !remoteRepositories.isEmpty()) {
-            buildingRequest = buildingRequest.setRemoteRepositories(remoteRepositories);
-        }
-
-        DefaultArtifactCoordinate coordinate = new DefaultArtifactCoordinate();
-        coordinate.setGroupId(groupId);
-        coordinate.setArtifactId(artifactId);
-        coordinate.setVersion(version);
-
-        return artifactResolver
-                .resolveArtifact(buildingRequest, coordinate)
-                .getArtifact()
-                .getFile();
+    private File getArchetypeFile(String groupId, String artifactId, String version)
+            throws ArtifactResolutionException {
+        DefaultArtifact artifact = new DefaultArtifact(groupId, artifactId, "", "jar", version);
+        ArtifactRequest request =
+                new ArtifactRequest(artifact, project.getRemotePluginRepositories(), "archetype-mojo");
+        ArtifactResult result = repositorySystem.resolveArtifact(session.getRepositorySession(), request);
+        return result.getArtifact().getFile();
     }
 
     private Properties getProperties(File goalFile) throws IOException {
@@ -671,22 +653,15 @@
             getLog().info("No post-archetype-generation goals to invoke.");
         }
         // verify result
-        ScriptRunner scriptRunner = new ScriptRunner(getLog());
+        ScriptRunner scriptRunner = new ScriptRunner();
         scriptRunner.setScriptEncoding(encoding);
 
         Map<String, Object> context = new LinkedHashMap<>();
         context.put("projectDir", basedir);
 
         try {
-            scriptRunner.run(
-                    "post-build script",
-                    goalFile.getParentFile(),
-                    postBuildHookScript,
-                    context,
-                    logger,
-                    "failure post script",
-                    true);
-        } catch (RunFailureException e) {
+            scriptRunner.run("post-build script", goalFile.getParentFile(), postBuildHookScript, context, logger);
+        } catch (ScriptException e) {
             throw new IntegrationTestFailure("post build script failure failure: " + e.getMessage(), e);
         }
     }
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationConfigurator.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationConfigurator.java
index 90b7093..1803b44 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationConfigurator.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationConfigurator.java
@@ -34,8 +34,6 @@
  * Configurator component to organize steps for archetype creation from a project.
  */
 public interface ArchetypeCreationConfigurator {
-    String ROLE = ArchetypeCreationConfigurator.class.getName();
-
     Properties configureArchetypeCreation(
             MavenProject project,
             Boolean interactiveMode,
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationQueryer.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationQueryer.java
index a0e0724..d07f2ca 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationQueryer.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/ArchetypeCreationQueryer.java
@@ -27,8 +27,6 @@
  * TODO this interface is bound to its implementation through the prompter exception
  */
 public interface ArchetypeCreationQueryer {
-    String ROLE = ArchetypeCreationQueryer.class.getName();
-
     /**
      */
     String getArchetypeArtifactId(String defaultValue) throws PrompterException;
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeGenerationConfigurator.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeGenerationConfigurator.java
index 7ead24d..51b4f01 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeGenerationConfigurator.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeGenerationConfigurator.java
@@ -32,8 +32,6 @@
  * Configurator component to organize steps for project generation from an archetype.
  */
 public interface ArchetypeGenerationConfigurator {
-    String ROLE = ArchetypeGenerationConfigurator.class.getName();
-
     void configureArchetype(
             ArchetypeGenerationRequest request, Boolean interactiveMode, Properties commandLineProperties)
             throws ArchetypeNotDefined, UnknownArchetype, ArchetypeNotConfigured, IOException, PrompterException,
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelectionQueryer.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelectionQueryer.java
index fa7f647..a2369ba 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelectionQueryer.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelectionQueryer.java
@@ -31,8 +31,6 @@
  * TODO this interface is bound to its implementation through the prompter exception
  */
 public interface ArchetypeSelectionQueryer {
-    String ROLE = ArchetypeSelectionQueryer.class.getName();
-
     Archetype selectArchetype(Map<String, List<Archetype>> map) throws PrompterException;
 
     boolean confirmSelection(ArchetypeDefinition archetypeDefinition) throws PrompterException;
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelector.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelector.java
index 134b35f..6aae7b2 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelector.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/ArchetypeSelector.java
@@ -34,8 +34,6 @@
 //      should be validating correctness, and if it so happens we get a crap entry then the generation mechanism
 //      should take care of reporting the error. The selector should not be downloading anything.
 public interface ArchetypeSelector {
-    String ROLE = ArchetypeSelector.class.getName();
-
     void selectArchetype(ArchetypeGenerationRequest request, Boolean interactiveMode, String catalogs)
             throws ArchetypeNotDefined, UnknownArchetype, UnknownGroup, IOException, PrompterException,
                     ArchetypeSelectionFailure;
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 cc7a0af..0d56ee1 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
@@ -18,6 +18,10 @@
  */
 package org.apache.maven.archetype.ui.generation;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
@@ -32,13 +36,13 @@
 import java.util.Set;
 
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.LoggingSupport;
 import org.apache.maven.archetype.common.ArchetypeArtifactManager;
 import org.apache.maven.archetype.common.Constants;
 import org.apache.maven.archetype.exception.ArchetypeGenerationConfigurationFailure;
 import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
 import org.apache.maven.archetype.exception.ArchetypeNotDefined;
 import org.apache.maven.archetype.exception.UnknownArchetype;
-import org.apache.maven.archetype.old.OldArchetype;
 import org.apache.maven.archetype.ui.ArchetypeConfiguration;
 import org.apache.maven.archetype.ui.ArchetypeDefinition;
 import org.apache.maven.archetype.ui.ArchetypeFactory;
@@ -56,36 +60,34 @@
 import org.apache.velocity.runtime.parser.node.ASTReference;
 import org.apache.velocity.runtime.parser.node.SimpleNode;
 import org.apache.velocity.runtime.visitor.BaseVisitor;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.components.interactivity.PrompterException;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
 
 // TODO: this seems to have more responsibilities than just a configurator
-@Component(role = ArchetypeGenerationConfigurator.class, hint = "default")
-public class DefaultArchetypeGenerationConfigurator extends AbstractLogEnabled
-        implements ArchetypeGenerationConfigurator {
-    @Requirement
-    OldArchetype oldArchetype;
+@Singleton
+@Named
+public class DefaultArchetypeGenerationConfigurator extends LoggingSupport implements ArchetypeGenerationConfigurator {
+    private final ArchetypeArtifactManager archetypeArtifactManager;
 
-    @Requirement
-    private ArchetypeArtifactManager archetypeArtifactManager;
+    private final ArchetypeFactory archetypeFactory;
 
-    @Requirement
-    private ArchetypeFactory archetypeFactory;
-
-    @Requirement
-    private ArchetypeGenerationQueryer archetypeGenerationQueryer;
+    private final ArchetypeGenerationQueryer archetypeGenerationQueryer;
 
     /**
      * Determines whether the layout is legacy or not.
      */
-    @Requirement
-    private ArtifactRepositoryLayout defaultArtifactRepositoryLayout;
+    private final ArtifactRepositoryLayout defaultArtifactRepositoryLayout;
 
-    public void setArchetypeArtifactManager(ArchetypeArtifactManager archetypeArtifactManager) {
+    @Inject
+    public DefaultArchetypeGenerationConfigurator(
+            ArchetypeArtifactManager archetypeArtifactManager,
+            ArchetypeFactory archetypeFactory,
+            ArchetypeGenerationQueryer archetypeGenerationQueryer,
+            ArtifactRepositoryLayout defaultArtifactRepositoryLayout) {
         this.archetypeArtifactManager = archetypeArtifactManager;
+        this.archetypeFactory = archetypeFactory;
+        this.archetypeGenerationQueryer = archetypeGenerationQueryer;
+        this.defaultArtifactRepositoryLayout = defaultArtifactRepositoryLayout;
     }
 
     @Override
@@ -318,10 +320,6 @@
         }
     }
 
-    void setArchetypeGenerationQueryer(ArchetypeGenerationQueryer archetypeGenerationQueryer) {
-        this.archetypeGenerationQueryer = archetypeGenerationQueryer;
-    }
-
     public static class RequiredPropertyComparator implements Comparator<String> {
         private final ArchetypeConfiguration archetypeConfiguration;
 
@@ -363,9 +361,8 @@
                 String defaultValue = archetypeConfiguration.getDefaultValue(propertyName);
                 if (StringUtils.contains(defaultValue, "${")) {
                     try {
-                        final boolean dumpNamespace = false;
                         SimpleNode node = RuntimeSingleton.parse(
-                                new StringReader(defaultValue), propertyName + ".default", dumpNamespace);
+                                new StringReader(defaultValue), velocityRuntime.getTemplate(propertyName + ".default"));
 
                         node.init(velocityContextAdapter, velocityRuntime);
 
