WIP
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);