You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2005/12/05 00:30:00 UTC

svn commit: r353935 - /maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java

Author: jvanzyl
Date: Sun Dec  4 15:29:52 2005
New Revision: 353935

URL: http://svn.apache.org/viewcvs?rev=353935&view=rev
Log:
o adding a parameter that will let you specify remote repositories on the cli

Modified:
    maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java

Modified: maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java
URL: http://svn.apache.org/viewcvs/maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java?rev=353935&r1=353934&r2=353935&view=diff
==============================================================================
--- maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java (original)
+++ maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java Sun Dec  4 15:29:52 2005
@@ -21,13 +21,18 @@
 import org.apache.maven.archetype.ArchetypeNotFoundException;
 import org.apache.maven.archetype.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.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
-import java.io.File;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.ArrayList;
 
 /**
  * Builds archetype containers.
@@ -42,12 +47,22 @@
     extends AbstractMojo
 {
     /**
-     * @parameter expression="${component.org.apache.maven.archetype.Archetype}"
-     * @required
+     * @component
      */
     private Archetype archetype;
 
     /**
+     * @component
+     */
+    private ArtifactRepositoryFactory artifactRepositoryFactory;
+
+    /**
+     * @component role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout" roleHint="default"
+     */
+    private ArtifactRepositoryLayout defaultArtifactRepositoryLayout;
+
+
+    /**
      * @parameter expression="${localRepository}"
      * @required
      */
@@ -98,7 +113,12 @@
      * @parameter expression="${project.remoteArtifactRepositories}"
      * @required
      */
-    private List remoteRepositories;
+    private List pomRemoteRepositories;
+
+    /**
+     * @parameter expression="${remoteRepositories}"
+     */
+    private String remoteRepositories;
 
     public void execute()
         throws MojoExecutionException
@@ -140,9 +160,23 @@
 
         map.put( "version", version );
 
+        List archetypeRemoteRepositories = new ArrayList( pomRemoteRepositories );
+
+        if ( remoteRepositories != null )
+        {
+            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, localRepository, remoteRepositories, map );
+            archetype.createArchetype( archetypeGroupId, archetypeArtifactId, archetypeVersion, localRepository, archetypeRemoteRepositories, map );
         }
         catch ( ArchetypeNotFoundException e )
         {
@@ -157,4 +191,23 @@
             throw new MojoExecutionException( "Error creating from archetype", e );
         }
     }
+
+    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 );
+    }
 }
+