You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ra...@apache.org on 2007/10/06 01:02:40 UTC
svn commit: r582417 - in /maven/sandbox/trunk/archetypeng:
archetypeng-common/src/main/java/org/apache/maven/archetype/
archetypeng-common/src/main/java/org/apache/maven/archetype/generator/
archetypeng-common/src/main/java/org/apache/maven/archetype/s...
Author: rafale
Date: Fri Oct 5 16:02:39 2007
New Revision: 582417
URL: http://svn.apache.org/viewvc?rev=582417&view=rev
Log:
Usage of Archetyper to create projet from archetype
Modified:
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java Fri Oct 5 16:02:39 2007
@@ -9,5 +9,5 @@
{
private ArtifactRepository localRepository;
- private List remoteRepositories;
+ private List remoteRepositories;
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java Fri Oct 5 16:02:39 2007
@@ -1,19 +1,166 @@
package org.apache.maven.archetype;
+import java.util.Properties;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
/** @author Jason van Zyl */
public class ArchetypeGenerationRequest
{
+ private String outputDirectory;
+
+ private ArtifactRepository localRepository;
+
+ // Archetype definition
+ private String archetypeName;
+
private String archetypeGroupId;
- private String archteypeArtifactId;
+ private String archetypeArtifactId;
private String archetypeVersion;
+ private String archetypeGoals;
+
+ private String archetypeRepository;
+
+ // Archetype configuration
private String groupId;
private String artifactId;
private String version;
-
+ private String packageName;
+
+ private Properties additionalProperties;
+
+ public String getArchetypeGroupId()
+ {
+ return archetypeGroupId;
+ }
+
+ public void setArchetypeGroupId( String archetypeGroupId )
+ {
+ this.archetypeGroupId = archetypeGroupId;
+ }
+
+ public String getArchetypeArtifactId()
+ {
+ return archetypeArtifactId;
+ }
+
+ public void setArchetypeArtifactId( String archetypeArtifactId )
+ {
+ this.archetypeArtifactId = archetypeArtifactId;
+ }
+
+ public String getArchetypeVersion()
+ {
+ return archetypeVersion;
+ }
+
+ public void setArchetypeVersion( String archetypeVersion )
+ {
+ this.archetypeVersion = archetypeVersion;
+ }
+
+ public String getArchetypeGoals()
+ {
+ return archetypeGoals;
+ }
+
+ public void setArchetypeGoals( String archetypeGoals )
+ {
+ this.archetypeGoals = archetypeGoals;
+ }
+
+ public String getArchetypeName()
+ {
+ return archetypeName;
+ }
+
+ public void setArchetypeName( String archetypeName )
+ {
+ this.archetypeName = archetypeName;
+ }
+
+ public String getArchetypeRepository()
+ {
+ return archetypeRepository;
+ }
+
+ public void setArchetypeRepository( String archetypeRepository )
+ {
+ this.archetypeRepository = archetypeRepository;
+ }
+
+ public String getArtifactId()
+ {
+ return artifactId;
+ }
+
+ public void setArtifactId( String artifactId )
+ {
+ this.artifactId = artifactId;
+ }
+
+ public String getGroupId()
+ {
+ return groupId;
+ }
+
+ public void setGroupId( String groupId )
+ {
+ this.groupId = groupId;
+ }
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public void setVersion( String version )
+ {
+ this.version = version;
+ }
+
+ public String getPackage()
+ {
+ return packageName;
+ }
+
+ public void setPackage( String packageName )
+ {
+ this.packageName = packageName;
+ }
+
+ public Properties getAdditionalProperties()
+ {
+ return additionalProperties;
+ }
+
+ public void setAdditionalProperties( Properties additionalProperties )
+ {
+ this.additionalProperties = additionalProperties;
+ }
+
+ public ArtifactRepository getLocalRepository()
+ {
+ return localRepository;
+ }
+
+ public void setLocalRepository( ArtifactRepository localRepository )
+ {
+ this.localRepository = localRepository;
+ }
+
+ public String getOutputDirectory()
+ {
+ return outputDirectory;
+ }
+
+ public void setOutputDirectory( String outputDirectory )
+ {
+ this.outputDirectory = outputDirectory;
+ }
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java Fri Oct 5 16:02:39 2007
@@ -1,6 +1,19 @@
package org.apache.maven.archetype;
+import org.apache.maven.archetype.exception.ArchetypeGenerationFailure;
+
/** @author Jason van Zyl */
public class ArchetypeGenerationResult
{
+ private Exception cause;
+
+ public Exception getCause( )
+ {
+ return cause;
+ }
+
+ public void setCause( Exception cause )
+ {
+ this.cause = cause;
+ }
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java Fri Oct 5 16:02:39 2007
@@ -21,7 +21,7 @@
ArchetypeCreationResult result = new ArchetypeCreationResult();
// This should take information from the request and that's it.
- //creator.createArchetype( );
+ //creator.createArchetype( request, result );
return result;
}
@@ -31,7 +31,7 @@
ArchetypeGenerationResult result = new ArchetypeGenerationResult();
// This should take information from the request and that's it.
- //generator.generateArchetype( );
+ generator.generateArchetype( request, result );
return result;
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java Fri Oct 5 16:02:39 2007
@@ -19,6 +19,8 @@
package org.apache.maven.archetype.generator;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.apache.maven.archetype.exception.ArchetypeGenerationFailure;
import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
@@ -40,6 +42,10 @@
public interface ArchetypeGenerator
{
String ROLE = ArchetypeGenerator.class.getName();
+
+ public void generateArchetype( ArchetypeGenerationRequest request,
+ ArchetypeGenerationResult result
+ );
void generateArchetype( File propertyFile,
ArtifactRepository localRepository,
Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java Fri Oct 5 16:02:39 2007
@@ -21,6 +21,8 @@
import org.apache.maven.archetype.Archetype;
import org.apache.maven.archetype.ArchetypeDescriptorException;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
import org.apache.maven.archetype.ArchetypeNotFoundException;
import org.apache.maven.archetype.ArchetypeTemplateProcessingException;
import org.apache.maven.archetype.common.ArchetypeArtifactManager;
@@ -45,10 +47,12 @@
import java.io.File;
import java.io.IOException;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import org.apache.maven.archetype.common.ArchetypeRegistryManager;
/** @plexus.component */
public class DefaultArchetypeGenerator
@@ -56,6 +60,9 @@
implements ArchetypeGenerator
{
/** @plexus.requirement */
+ private ArchetypeRegistryManager archetypeRegistryManager;
+
+ /** @plexus.requirement */
private ArchetypeArtifactManager archetypeArtifactManager;
/** @plexus.requirement */
@@ -66,6 +73,7 @@
/** @plexus.requirement */
private FilesetArchetypeGenerator filesetGenerator;
+
/** @plexus.requirement */
private Archetype oldArchetype;
@@ -89,6 +97,29 @@
ArchetypeGenerationFailure
{
Properties properties = initialiseArchetypeProperties( propertyFile );
+ generateArchetype( properties, localRepository, repositories, basedir );
+ }
+
+
+ private void generateArchetype(
+ Properties properties,
+ ArtifactRepository localRepository,
+ List repositories,
+ String basedir
+ )
+ throws
+ IOException,
+ ArchetypeNotDefined,
+ UnknownArchetype,
+ ArchetypeNotConfigured,
+ ProjectDirectoryExists,
+ PomFileExists,
+ OutputFileExists,
+ XmlPullParserException,
+ DocumentException,
+ InvalidPackaging,
+ ArchetypeGenerationFailure
+ {
ArchetypeDefinition archetypeDefinition =
archetypeFactory.createArchetypeDefinition( properties );
@@ -278,6 +309,80 @@
throw new ArchetypeGenerationFailure(
"Failed to generate project from the old archetype"
);
+ }
+ }
+
+ public void generateArchetype( ArchetypeGenerationRequest request, ArchetypeGenerationResult result )
+ {
+ try
+ {
+ Properties properties = request.getAdditionalProperties( );
+ properties.setProperty( Constants.ARCHETYPE_GROUP_ID, request.getArchetypeGroupId() );
+ properties.setProperty( Constants.ARCHETYPE_ARTIFACT_ID, request.getArchetypeArtifactId() );
+ properties.setProperty( Constants.ARCHETYPE_VERSION, request.getArchetypeVersion() );
+
+ properties.setProperty( Constants.GROUP_ID, request.getGroupId( ) );
+ properties.setProperty( Constants.ARTIFACT_ID, request.getArtifactId( ) );
+ properties.setProperty( Constants.VERSION, request.getVersion( ) );
+ properties.setProperty( Constants.PACKAGE, request.getPackage( ) );
+ properties.setProperty( Constants.ARCHETYPE_POST_GENERATION_GOALS, request.getArchetypeGoals( ) );
+
+ generateArchetype( properties, request.getLocalRepository( ), Collections.singletonList( archetypeRegistryManager.createRepository( request.getArchetypeRepository( ), "repository" ) ), request.getOutputDirectory( ) );
+ }
+ catch ( IOException ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( ArchetypeNotDefined ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( UnknownArchetype ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( ArchetypeNotConfigured ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( ProjectDirectoryExists ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( PomFileExists ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( OutputFileExists ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( XmlPullParserException ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( DocumentException ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( InvalidPackaging ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
+ }
+ catch ( ArchetypeGenerationFailure ex )
+ {
+ getLogger().error(ex.getMessage(), ex);
+ result.setCause(ex);
}
}
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java Fri Oct 5 16:02:39 2007
@@ -7,6 +7,9 @@
import java.util.List;
import java.util.Properties;
import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.settings.Settings;
+import org.codehaus.plexus.PlexusContainer;
/**
* @plexus.component role-hint="remote-catalog"
@@ -17,6 +20,16 @@
{
public static String REPOSITORY_PROPERTY = "repository";
+// /**
+// * @plexus.requirement
+// */
+// private PlexusContainer container;
+//
+// /**
+// * @plexus.requirement
+// */
+// private WagonManager wagonManager;
+
public List getArchetypes( Properties properties )
throws ArchetypeDataSourceException
{
@@ -48,4 +61,120 @@
{
throw new ArchetypeDataSourceException( "Not supported yet." );
}
+
+// // Stealed from the embedder in trunk on 2007-10-04
+// // then adapted
+// private void artifactTransferMechanism( MavenExecutionRequest request, Configuration configuration, Settings settings )
+// throws MavenEmbedderException
+// {
+// // ------------------------------------------------------------------------
+// // Artifact Transfer Mechanism
+// //
+// //
+// // ------------------------------------------------------------------------
+//
+// if ( settings.isOffline() )
+// {
+// getLogger().info( "You are working in offline mode." );
+//
+// wagonManager.setOnline( false );
+// }
+// else
+// {
+// wagonManager.findAndRegisterWagons( n );
+//
+// wagonManager.setInteractive( settings.isInteractiveMode() );
+//
+// wagonManager.setDownloadMonitor( request.getTransferListener() );
+//
+// wagonManager.setOnline( true );
+// }
+//
+// try
+// {
+// resolveParameters( settings );
+// }
+// catch ( Exception e )
+// {
+// throw new MavenEmbedderException(
+// "Unable to configure Maven for execution",
+// e );
+// }
+// }
+//
+// // Stealed from the embedder in trunk on 2007-10-04
+// // then adapted
+// private void resolveParameters( Settings settings )
+// throws ComponentLookupException, ComponentLifecycleException, SettingsConfigurationException
+// {
+// WagonManager wagonManager = (WagonManager) container.lookup( WagonManager.ROLE );
+//
+// try
+// {
+// Proxy proxy = settings.getActiveProxy();
+//
+// if ( proxy != null )
+// {
+// if ( proxy.getHost() == null )
+// {
+// throw new SettingsConfigurationException( "Proxy in settings.xml has no host" );
+// }
+//
+// wagonManager.addProxy(
+// proxy.getProtocol(),
+// proxy.getHost(),
+// proxy.getPort(),
+// proxy.getUsername(),
+// proxy.getPassword(),
+// proxy.getNonProxyHosts() );
+// }
+//
+// for ( Iterator i = settings.getServers().iterator(); i.hasNext(); )
+// {
+// Server server = (Server) i.next();
+//
+// wagonManager.addAuthenticationInfo(
+// server.getId(),
+// server.getUsername(),
+// server.getPassword(),
+// server.getPrivateKey(),
+// server.getPassphrase() );
+//
+// wagonManager.addPermissionInfo(
+// server.getId(),
+// server.getFilePermissions(),
+// server.getDirectoryPermissions() );
+//
+// if ( server.getConfiguration() != null )
+// {
+// wagonManager.addConfiguration(
+// server.getId(),
+// (Xpp3Dom) server.getConfiguration() );
+// }
+// }
+//
+// RepositoryPermissions defaultPermissions = new RepositoryPermissions();
+//
+// defaultPermissions.setDirectoryMode( "775" );
+//
+// defaultPermissions.setFileMode( "664" );
+//
+// wagonManager.setDefaultRepositoryPermissions( defaultPermissions );
+//
+// for ( Iterator i = settings.getMirrors().iterator(); i.hasNext(); )
+// {
+// Mirror mirror = (Mirror) i.next();
+//
+// wagonManager.addMirror(
+// mirror.getId(),
+// mirror.getMirrorOf(),
+// mirror.getUrl() );
+// }
+// }
+// finally
+// {
+// container.release( wagonManager );
+// }
+// }
+
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java Fri Oct 5 16:02:39 2007
@@ -40,10 +40,12 @@
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
-import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
+import org.apache.maven.archetype.Archetyper;
/**
* Generates sample project from archetype.
@@ -58,6 +60,9 @@
implements ContextEnabled
{
/** @component */
+ private Archetyper archetyper;
+
+ /** @component */
private ArchetypeSelector selector;
/** @component */
@@ -170,6 +175,13 @@
//
// look at the result and respond accordingly.
+ ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
+ request.setArchetypeGroupId( archetypeGroupId );
+ request.setArchetypeArtifactId( archetypeArtifactId );
+ request.setArchetypeVersion( archetypeVersion );
+ request.setOutputDirectory( basedir.getAbsolutePath() );
+ request.setLocalRepository( localRepository );
+
try
{
// This is not really necessary as we will use the central repository or the repository that
@@ -183,28 +195,50 @@
archetypeRegistryFile
);
+ // Only interactiveMode, repositories and registry file are needed outside the request.
selector.selectArchetype(
- archetypeGroupId,
- archetypeArtifactId,
- archetypeVersion,
+ request,
settings.getInteractiveMode(),
- propertyFile,
archetypeRegistryFile,
- localRepository,
repositories
);
+// Old way to call components
+// selector.selectArchetype(
+// archetypeGroupId,
+// archetypeArtifactId,
+// archetypeVersion,
+// settings.getInteractiveMode(),
+// propertyFile,
+// archetypeRegistryFile,
+// localRepository,
+// repositories
+// );
// Create the request here for the archetyper and use that instead of the configurator directly here.
+ // Only interactiveMode, system.properties (configuration properties) and repositories are needed outside the request.
configurator.configureArchetype(
+ request,
settings.getInteractiveMode(),
- propertyFile,
System.getProperties(),
- localRepository,
repositories
);
+// Old way to call components
+// configurator.configureArchetype(
+// settings.getInteractiveMode(),
+// propertyFile,
+// System.getProperties(),
+// localRepository,
+// repositories
+// );
+
+ // At this point, the archetype should have been downloaded by the configurator,
+ // so the repositories are not needed in the request
+
+ ArchetypeGenerationResult result = archetyper.generateProjectFromArchetype( request );
- generator.generateArchetype( propertyFile, localRepository, repositories, basedir.getAbsolutePath() );
+ // Old way to call the components
+ //generator.generateArchetype( propertyFile, localRepository, repositories, basedir.getAbsolutePath() );
}
catch ( Exception ex )
{
@@ -219,9 +253,9 @@
Properties properties = PropertyUtils.loadProperties( propertyFile );
- String artifactId = properties.getProperty( "artifactId" );
+ String artifactId = request.getArtifactId();
- String postArchetypeGenerationGoals = properties.getProperty( Constants.ARCHETYPE_POST_GENERATION_GOALS );
+ String postArchetypeGenerationGoals = request.getArchetypeGoals();
if ( StringUtils.isEmpty( postArchetypeGenerationGoals ) )
{
@@ -233,7 +267,7 @@
invokePostArchetypeGenerationGoals( postArchetypeGenerationGoals, artifactId );
}
- FileUtils.fileDelete( propertyFile.getAbsolutePath() );
+// FileUtils.fileDelete( propertyFile.getAbsolutePath() );
}
private void invokePostArchetypeGenerationGoals( String goals, String artifactId )
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java Fri Oct 5 16:02:39 2007
@@ -19,6 +19,7 @@
package org.apache.maven.archetype.ui;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.exception.ArchetypeGenerationConfigurationFailure;
import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
import org.apache.maven.archetype.exception.ArchetypeNotDefined;
@@ -32,12 +33,27 @@
import java.util.List;
import java.util.Properties;
+import org.apache.maven.archetype.common.ArchetypeConfiguration;
public interface ArchetypeGenerationConfigurator
{
String ROLE = ArchetypeGenerationConfigurator.class.getName();
- void configureArchetype(
+ public void configureArchetype(
+ ArchetypeGenerationRequest request,
+ Boolean interactiveMode,
+ Properties commandLineProperties,
+ List repositories
+ )
+ throws
+ ArchetypeNotDefined,
+ UnknownArchetype,
+ ArchetypeNotConfigured,
+ IOException,
+ PrompterException,
+ ArchetypeGenerationConfigurationFailure;
+
+ public ArchetypeConfiguration configureArchetype(
Boolean interactiveMode,
File propertyFile,
Properties commandLineProperties,
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java Fri Oct 5 16:02:39 2007
@@ -19,6 +19,7 @@
package org.apache.maven.archetype.ui;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.apache.maven.archetype.exception.ArchetypeNotDefined;
import org.apache.maven.archetype.exception.ArchetypeSelectionFailure;
@@ -35,6 +36,20 @@
public interface ArchetypeSelector
{
String ROLE = ArchetypeSelector.class.getName();
+
+ public void selectArchetype( ArchetypeGenerationRequest request,
+ Boolean interactiveMode,
+ File archetypeRegistryFile,
+ List repositories
+ )
+ throws
+ ArchetypeNotDefined,
+ UnknownArchetype,
+ UnknownGroup,
+ IOException,
+ FileNotFoundException,
+ PrompterException,
+ ArchetypeSelectionFailure;
ArchetypeDefinition selectArchetype( String archetypeGroupId,
String archetypeArtifactId,
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java Fri Oct 5 16:02:39 2007
@@ -20,6 +20,7 @@
package org.apache.maven.archetype.ui;
import org.apache.maven.archetype.Archetype;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.common.ArchetypeArtifactManager;
import org.apache.maven.archetype.common.ArchetypeConfiguration;
import org.apache.maven.archetype.common.ArchetypeDefinition;
@@ -42,6 +43,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
+import org.apache.maven.archetype.common.Constants;
/** @plexus.component */
public class DefaultArchetypeGenerationConfigurator
@@ -50,6 +52,7 @@
{
/** @plexus.requirement */
Archetype oldArchetype;
+
/** @plexus.requirement */
private ArchetypeArtifactManager archetypeArtifactManager;
@@ -62,7 +65,7 @@
/** @plexus.requirement */
private ArchetypePropertiesManager archetypePropertiesManager;
- public void configureArchetype(
+ public ArchetypeConfiguration configureArchetype(
Boolean interactiveMode,
File propertyFile,
Properties commandLineProperties,
@@ -77,9 +80,11 @@
PrompterException,
ArchetypeGenerationConfigurationFailure
{
+ // propertyFile is no longer needed
Properties properties =
initialiseArchetypeProperties( commandLineProperties, propertyFile );
+ // The archetype should be defined at this point and exist!
ArchetypeDefinition archetypeDefinition =
archetypeFactory.createArchetypeDefinition( properties );
@@ -208,10 +213,13 @@
}
}
- archetypePropertiesManager.writeProperties(
- archetypeConfiguration.toProperties(),
- propertyFile
- );
+// propertyFile is no longer needed
+// archetypePropertiesManager.writeProperties(
+// archetypeConfiguration.toProperties(),
+// propertyFile
+// );
+
+ return archetypeConfiguration;
}
private Properties initialiseArchetypeProperties(
@@ -223,7 +231,8 @@
IOException
{
Properties properties = new Properties();
- archetypePropertiesManager.readProperties( properties, propertyFile );
+// propertyFile is no longer needed
+// archetypePropertiesManager.readProperties( properties, propertyFile );
Iterator commandLinePropertiesIterator =
new ArrayList( commandLineProperties.keySet() ).iterator();
@@ -236,5 +245,47 @@
);
}
return properties;
+ }
+
+ public void configureArchetype(
+ ArchetypeGenerationRequest request,
+ Boolean interactiveMode,
+ Properties commandLineProperties,
+ List repositories
+ )
+ throws
+ ArchetypeNotDefined,
+ UnknownArchetype,
+ ArchetypeNotConfigured,
+ IOException,
+ PrompterException,
+ ArchetypeGenerationConfigurationFailure
+ {
+ Properties p = new Properties( commandLineProperties );
+ p.setProperty( Constants.ARCHETYPE_GROUP_ID, request.getArchetypeGroupId() );
+ p.setProperty( Constants.ARCHETYPE_ARTIFACT_ID, request.getArchetypeArtifactId() );
+ p.setProperty( Constants.ARCHETYPE_VERSION, request.getArchetypeVersion() );
+
+ // propertyFile is no longer needed, set to null:
+ ArchetypeConfiguration archetypeConfiguration = configureArchetype(
+ interactiveMode,
+ null,
+ p,
+ request.getLocalRepository(),
+ repositories
+ );
+
+ request.setGroupId( archetypeConfiguration.getProperty( Constants.GROUP_ID ) );
+ request.setArtifactId( archetypeConfiguration.getProperty( Constants.ARTIFACT_ID ) );
+ request.setVersion( archetypeConfiguration.getProperty( Constants.VERSION ) );
+ request.setPackage( archetypeConfiguration.getProperty( Constants.PACKAGE ) );
+ Properties properties = archetypeConfiguration.getProperties();
+ properties.remove( Constants.GROUP_ID );
+ properties.remove( Constants.ARTIFACT_ID );
+ properties.remove( Constants.VERSION );
+ properties.remove( Constants.PACKAGE );
+
+ request.setAdditionalProperties( properties );
+
}
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java Fri Oct 5 16:02:39 2007
@@ -19,6 +19,7 @@
package org.apache.maven.archetype.ui;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.catalog.Archetype;
import org.apache.maven.archetype.common.ArchetypeArtifactManager;
import org.apache.maven.archetype.common.ArchetypeDefinition;
@@ -186,10 +187,11 @@
}
else
{
- archetypePropertiesManager.writeProperties(
- toProperties( archetypeDefinition ),
- propertyFile
- );
+// properties is no longer needed
+// archetypePropertiesManager.writeProperties(
+// toProperties( archetypeDefinition ),
+// propertyFile
+// );
return archetypeDefinition;
}
@@ -256,14 +258,15 @@
IOException
{
Properties properties = new Properties();
- try
- {
- archetypePropertiesManager.readProperties( properties, propertyFile );
- }
- catch ( FileNotFoundException e )
- {
- getLogger().debug( "archetype.properties does not exist" );
- }
+// propertyFile is no longer needed
+// try
+// {
+// archetypePropertiesManager.readProperties( properties, propertyFile );
+// }
+// catch ( FileNotFoundException e )
+// {
+// getLogger().debug( "archetype.properties does not exist" );
+// }
if ( archetypeGroupId != null )
{
@@ -281,5 +284,40 @@
}
return properties;
+ }
+
+ public void selectArchetype(
+ ArchetypeGenerationRequest request,
+ Boolean interactiveMode,
+ File archetypeRegistryFile,
+ List repositories
+ )
+ throws
+ ArchetypeNotDefined,
+ UnknownArchetype,
+ UnknownGroup,
+ IOException,
+ FileNotFoundException,
+ PrompterException,
+ ArchetypeSelectionFailure
+ {
+ // propertyFile is no longer needed, set to null!
+ // archetypeRegistryFile is no longer used, set to null!
+ ArchetypeDefinition definition = selectArchetype(
+ request.getArchetypeGroupId(),
+ request.getArchetypeArtifactId(),
+ request.getArchetypeVersion(),
+ interactiveMode,
+ null,
+ null,
+ request.getLocalRepository(),
+ repositories);
+
+ request.setArchetypeGroupId( definition.getGroupId() );
+ request.setArchetypeArtifactId( definition.getArtifactId() );
+ request.setArchetypeVersion( definition.getVersion() );
+ request.setArchetypeRepository( definition.getRepository() );
+ request.setArchetypeGoals( definition.getGoals() );
+ request.setArchetypeName( definition.getName() );
}
}