Author: rafale
Date: Wed Feb 13 16:24:51 2008
New Revision: 627622
URL: http://svn.apache.org/viewvc?rev=627622&view=rev
Log:
Changing 'create' goal to 'generate'. Restoring old 'create' mojo to ensure
backward comaptibility
Added:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/MavenArchetypeMojo.java
(with props)
Added:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/MavenArchetypeMojo.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/MavenArchetypeMojo.java?rev=627622&view=auto
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/MavenArchetypeMojo.java
(added)
+++
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/MavenArchetypeMojo.java
Wed Feb 13 16:24:51 2008
@@ -0,0 +1,270 @@
+package org.apache.maven.archetype.mojos;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.archetype.old.OldArchetype;
+import org.apache.maven.archetype.old.ArchetypeDescriptorException;
+import org.apache.maven.archetype.old.ArchetypeNotFoundException;
+import org.apache.maven.archetype.old.ArchetypeTemplateProcessingException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The archetype creation goal looks for an archetype with a given groupId,
+ * artifactId, and version and retrieves it from the remote repository. Once
the
+ * archetype is retrieved, it is then processed against a set of user
parameters
+ * to create a working Maven project.
+ *
+ * @description Creates archetype containers.
+ * @requiresProject false
+ * @goal create
+ */
+public class MavenArchetypeMojo
+ extends AbstractMojo
+{
+ /**
+ * Used to create the Archetype specified by the groupId, artifactId, and
+ * version from the remote repository.
+ *
+ * @component
+ */
+ private OldArchetype archetype;
+
+ /**
+ * Used to create ArtifactRepository objects given the urls of the remote
+ * repositories.
+ *
+ * @component
+ */
+ private ArtifactRepositoryFactory artifactRepositoryFactory;
+
+ /**
+ * Determines whether the layout is legacy or not.
+ *
+ * @component
role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
roleHint="default"
+ */
+ private ArtifactRepositoryLayout defaultArtifactRepositoryLayout;
+
+
+ /**
+ * Maven's local repository.
+ *
+ * @parameter expression="${localRepository}"
+ * @required
+ */
+ private ArtifactRepository localRepository;
+
+ /**
+ * The Archetype Group Id to be used.
+ *
+ * @parameter expression="${archetypeGroupId}"
default-value="org.apache.maven.archetypes"
+ * @required
+ */
+ private String archetypeGroupId;
+
+ /**
+ * The Archetype Artifact Id to be used.
+ *
+ * @parameter expression="${archetypeArtifactId}"
default-value="maven-archetype-quickstart"
+ * @required
+ */
+ private String archetypeArtifactId;
+
+ /**
+ * The Archetype Version to be used.
+ *
+ * @parameter expression="${archetypeVersion}" default-value="RELEASE"
+ * @required
+ */
+ private String archetypeVersion;
+
+ /**
+ * The Group Id of the project to be build.
+ *
+ * @parameter expression="${groupId}"
+ */
+ private String groupId;
+
+ /**
+ * The Artifact Id of the project to be build.
+ *
+ * @parameter expression="${artifactId}"
+ */
+ private String artifactId;
+
+ /**
+ * The Version of the project to be build.
+ *
+ * @parameter expression="${version}" default-value="1.0-SNAPSHOT"
+ * @required
+ */
+ private String version;
+
+ /**
+ * The Package Name of the project to be build.
+ *
+ * @parameter expression="${packageName}" alias="package"
+ */
+ private String packageName;
+
+ /**
+ * The remote repositories available for discovering dependencies and
extensions as indicated
+ * by the POM.
+ *
+ * @parameter expression="${project.remoteArtifactRepositories}"
+ * @required
+ */
+ private List pomRemoteRepositories;
+
+ /**
+ * Other remote repositories available for discovering dependencies and
extensions.
+ *
+ * @parameter expression="${remoteRepositories}"
+ */
+ private String remoteRepositories;
+
+ /**
+ * The project to be created an archetype of.
+ *
+ * @parameter expression="${project}"
+ */
+ private MavenProject project;
+
+ /**
+ * @parameter expression="${basedir}" default-value="${user.dir}"
+ */
+ private String basedir;
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ // TODO: prompt for missing values
+ // TODO: configurable license
+
+ //
----------------------------------------------------------------------
+ // archetypeGroupId
+ // archetypeArtifactId
+ // archetypeVersion
+ //
+ // localRepository
+ // remoteRepository
+ // parameters
+ //
----------------------------------------------------------------------
+
+ if ( project.getFile() != null && groupId == null )
+ {
+ groupId = project.getGroupId();
+ }
+
+ if ( packageName == null )
+ {
+ getLog().info( "Defaulting package to group ID: " + groupId );
+
+ packageName = groupId;
+ }
+
+ // TODO: context mojo more appropriate?
+ Map map = new HashMap();
+
+ map.put( "basedir", basedir );
+
+ map.put( "package", packageName );
+
+ map.put( "packageName", packageName );
+
+ map.put( "groupId", groupId );
+
+ map.put( "artifactId", artifactId );
+
+ map.put( "version", version );
+
+ List archetypeRemoteRepositories = new ArrayList(
pomRemoteRepositories );
+
+ if ( remoteRepositories != null )
+ {
+ getLog().info( "We are using command line specified remote
repositories: " + remoteRepositories );
+
+ archetypeRemoteRepositories = new ArrayList();
+
+ String[] s = StringUtils.split( remoteRepositories, "," );
+
+ for ( int i = 0; i < s.length; i++ )
+ {
+ archetypeRemoteRepositories.add( createRepository( s[i], "id"
+ i ) );
+ }
+ }
+
+ try
+ {
+ archetype.createArchetype(
+ archetypeGroupId,
+ archetypeArtifactId,
+ archetypeVersion,
+ createRepository( "http://repo1.maven.org/maven2",
"central" ),
+ localRepository,
+ archetypeRemoteRepositories,
+ map );
+ }
+ catch ( ArchetypeNotFoundException e )
+ {
+ throw new MojoExecutionException( "Error creating from archetype",
e );
+ }
+ catch ( ArchetypeDescriptorException e )
+ {
+ throw new MojoExecutionException( "Error creating from archetype",
e );
+ }
+ catch ( ArchetypeTemplateProcessingException e )
+ {
+ throw new MojoExecutionException( "Error creating from archetype",
e );
+ }
+ }
+
+ //TODO: this should be put in John's artifact utils and used from there
instead of being repeated here. Creating
+ // artifact repositories is someowhat cumbersome atm.
+ public ArtifactRepository createRepository( String url, String
repositoryId )
+ {
+ // snapshots vs releases
+ // offline = to turning the update policy off
+
+ //TODO: we'll need to allow finer grained creation of repositories but
this will do for now
+
+ 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 artifactRepositoryFactory.createArtifactRepository(
repositoryId, url, defaultArtifactRepositoryLayout,
+
snapshotsPolicy, releasesPolicy );
+ }
+}
+
Propchange:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/MavenArchetypeMojo.java
------------------------------------------------------------------------------
svn:eol-style = native