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]