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 > > >
