Hi,

I hope this can solve some problems.
If it don't, feel free to undo this commit.

Regards

Raphaël


2008/2/14, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
> 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
>
>
>

Reply via email to