Hi,

Some thoughts...

I think you need to update your license header template to the new format :)

Also, I think "type" is a more familiar name than "packaging", and you might want to add classifiers.

Finally, I think it's more correct to throw a MojoFailureException if you get an ArtifactNotFoundException, and keep the MojoExecEx for the ArtResEx

Cheers,
Brett

On 28/08/2008, at 8:41 PM, [EMAIL PROTECTED] wrote:

Author: dfabulich
Date: Thu Aug 28 03:41:52 2008
New Revision: 689779

URL: http://svn.apache.org/viewvc?rev=689779&view=rev
Log:
[MDEP-178] Create a goal to download single artifact transitively

Added:
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/ apache/maven/plugin/dependency/GetMojo.java

Added: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/ apache/maven/plugin/dependency/GetMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/GetMojo.java?rev=689779&view=auto
= = = = = = = = ====================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/ apache/maven/plugin/dependency/GetMojo.java (added) +++ maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/ apache/maven/plugin/dependency/GetMojo.java Thu Aug 28 03:41:52 2008
@@ -0,0 +1,192 @@
+package org.apache.maven.plugin.dependency;
+
+/*
+ * 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 java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+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.artifact.repository.layout.DefaultRepositoryLayout; +import org .apache.maven.artifact.resolver.AbstractArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * Downloads a single artifact transitively from a specified remote repository.
+ *
+ * @goal get
+ * @requiresProject false
+ *
+ */
+public class GetMojo
+    extends AbstractMojo
+{
+
+    /**
+     * @component
+     * @readonly
+     */
+    private ArtifactFactory artifactFactory;
+
+    /**
+     * @component
+     * @readonly
+     */
+    private ArtifactResolver artifactResolver;
+
+    /**
+     * @component
+     * @readonly
+     */
+    private ArtifactRepositoryFactory artifactRepositoryFactory;
+
+    /**
+     * @component
+     * @readonly
+     */
+    private ArtifactMetadataSource source;
+
+    /**
+     *
+     * @parameter expression="${localRepository}"
+     * @readonly
+     */
+    private ArtifactRepository localRepository;
+
+    /**
+     * The groupId of the artifact to download
+     * @parameter expression="${groupId}"
+     */
+    private String groupId;
+
+    /**
+     * The artifactId of the artifact to download
+     * @parameter expression="${artifactId}"
+     */
+    private String artifactId;
+
+    /**
+     * The version of the artifact to download
+     * @parameter expression="${version}"
+     */
+    private String version;
+
+    /**
+     * The packaging of the artifact to download
+     * @parameter expression="${packaging}" default-value="jar"
+     */
+    private String packaging = "jar";
+
+    /**
+ * The id of the repository from which we'll download the artifact
+     * @parameter expression="${repoId}" default-value="temp"
+     */
+    private String repositoryId = "temp";
+
+    /**
+ * The url of the repository from which we'll download the artifact
+     * @parameter expression="${repoUrl}"
+     * @required
+     */
+    private String repositoryUrl;
+
+    /**
+     * @parameter expression="${remoteRepositories}"
+     * @readonly
+     */
+    private String remoteRepositories;
+
+    /**
+     * A string of the form groupId:artifactId:version[:packaging].
+     * @parameter expression="${artifact}"
+     */
+    private String artifact;
+
+    /**
+     *
+     * @parameter expression="${project.remoteArtifactRepositories}"
+     * @required
+     * @readonly
+     */
+    private List pomRemoteRepositories;
+
+    public void execute()
+        throws MojoExecutionException, MojoFailureException
+    {
+
+        if ( artifactId == null && artifact == null )
+ throw new MojoFailureException( "You must specify an artifact, " + + "e.g. -Dartifact=org.apache.maven.plugins:maven- downloader-plugin:1.0" );
+        if ( artifactId == null )
+        {
+            String[] tokens = StringUtils.split( artifact, ":" );
+            if ( tokens.length != 3 && tokens.length != 4 )
+ throw new MojoFailureException( "Invalid artifact, you must specify " + + "groupId:artifactId:version[:packaging] " + artifact );
+            groupId = tokens[0];
+            artifactId = tokens[1];
+            version = tokens[2];
+            if ( tokens.length == 4 )
+                packaging = tokens[3];
+        }
+ Artifact toDownload = artifactFactory.createBuildArtifact( groupId, artifactId, version, packaging );
+        Artifact dummyOriginatingArtifact =
+ artifactFactory.createBuildArtifact( "org.apache.maven.plugins", "maven-downloader-plugin", "1.0", "jar" );
+
+ ArtifactRepositoryLayout repositoryLayout = new DefaultRepositoryLayout();
+        ArtifactRepositoryPolicy always =
+ new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, + ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+        ArtifactRepository remoteRepo =
+ artifactRepositoryFactory.createArtifactRepository( repositoryId, repositoryUrl, repositoryLayout, always, + always );
+
+        if ( pomRemoteRepositories == null )
+            pomRemoteRepositories = new ArrayList();
+
+        List repoList = new ArrayList( pomRemoteRepositories );
+        if ( remoteRepositories != null )
+        {
+
+ repoList .addAll( Arrays.asList( StringUtils.split( remoteRepositories, "," ) ) );
+
+        }
+
+        repoList.add( remoteRepo );
+
+        try
+        {
+ artifactResolver .resolveTransitively( Collections.singleton( toDownload ), dummyOriginatingArtifact, + repoList, localRepository, source );
+        }
+        catch ( AbstractArtifactResolutionException e )
+        {
+ throw new MojoExecutionException( "Couldn't download artifact: " + e.getMessage(), e );
+        }
+    }
+}



--
Brett Porter
[EMAIL PROTECTED]
http://blogs.exist.com/bporter/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to