Author: dfabulich Date: Tue Aug 26 18:17:23 2008 New Revision: 689321 URL: http://svn.apache.org/viewvc?rev=689321&view=rev Log: creating a plugin that lets you download artifacts from an URL
Added: maven/sandbox/trunk/plugins/maven-downloader-plugin/ maven/sandbox/trunk/plugins/maven-downloader-plugin/pom.xml maven/sandbox/trunk/plugins/maven-downloader-plugin/src/ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/maven/ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/maven/plugins/ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/maven/plugins/GetMojo.java Modified: maven/sandbox/trunk/plugins/maven-reactor-plugin/TODO.txt maven/sandbox/trunk/plugins/pom.xml Added: maven/sandbox/trunk/plugins/maven-downloader-plugin/pom.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-downloader-plugin/pom.xml?rev=689321&view=auto ============================================================================== --- maven/sandbox/trunk/plugins/maven-downloader-plugin/pom.xml (added) +++ maven/sandbox/trunk/plugins/maven-downloader-plugin/pom.xml Tue Aug 26 18:17:23 2008 @@ -0,0 +1,32 @@ +<?xml version="1.0"?><project> + <parent> + <artifactId>maven-plugins</artifactId> + <groupId>org.apache.maven.plugins</groupId> + <version>11</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-downloader-plugin</artifactId> + <packaging>maven-plugin</packaging> + <name>maven-downloader-plugin Maven Mojo</name> + <version>1.0-SNAPSHOT</version> + <url>http://maven.apache.org</url> + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.0.9</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> \ No newline at end of file Added: maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/maven/plugins/GetMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/maven/plugins/GetMojo.java?rev=689321&view=auto ============================================================================== --- maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/maven/plugins/GetMojo.java (added) +++ maven/sandbox/trunk/plugins/maven-downloader-plugin/src/main/java/org/apache/maven/plugins/GetMojo.java Tue Aug 26 18:17:23 2008 @@ -0,0 +1,163 @@ +package org.apache.maven.plugins; + +/* + * 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.codehaus.plexus.util.StringUtils; + +/** + * Goal which downloads an artifact + * + * @goal get + * @requiresProject false + * + */ +public class GetMojo + extends AbstractMojo +{ + + /** + * @component + */ + private ArtifactFactory artifactFactory; + + /** + * @component + */ + private ArtifactResolver artifactResolver; + + /** + * @component + */ + private ArtifactRepositoryFactory artifactRepositoryFactory; + + /** + * @component + */ + private ArtifactMetadataSource source; + + /** + * ArtifactRepository of the localRepository. + * + * @parameter expression="${localRepository}" + * @readonly + */ + private ArtifactRepository localRepository; + + /** + * @parameter expression="${groupId}" + * @required + */ + private String groupId; + + /** + * @parameter expression="${artifactId}" + * @required + */ + private String artifactId; + + /** + * @parameter expression="${version}" + * @required + */ + private String version; + + /** + * @parameter expression="${packaging}" default-value="jar" + */ + private String packaging = "jar"; + + /** + * @parameter expression="${repoId}" default-value="temp" + */ + private String repoId = "temp"; + + /** + * @parameter expression="${repoUrl}" + * @required + */ + private String repoUrl; + + /** + * @parameter expression="${remoteRepositories}" + */ + private String remoteRepositories; + + /** + * The remote repositories available for discovering dependencies and extensions as indicated + * by the POM. + * + * @parameter expression="${project.remoteArtifactRepositories}" + * @required + */ + private List pomRemoteRepositories; + + public void execute() + throws MojoExecutionException + { + + 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( repoId, repoUrl, 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 ); + } + } +} Modified: maven/sandbox/trunk/plugins/maven-reactor-plugin/TODO.txt URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-reactor-plugin/TODO.txt?rev=689321&r1=689320&r2=689321&view=diff ============================================================================== --- maven/sandbox/trunk/plugins/maven-reactor-plugin/TODO.txt (original) +++ maven/sandbox/trunk/plugins/maven-reactor-plugin/TODO.txt Tue Aug 26 18:17:23 2008 @@ -4,4 +4,3 @@ basic unit test - would require injecting ProjectSorter (can somebody give me a hint?) graduate from sandbox make a reverse dependency tree - Modified: maven/sandbox/trunk/plugins/pom.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/pom.xml?rev=689321&r1=689320&r2=689321&view=diff ============================================================================== --- maven/sandbox/trunk/plugins/pom.xml (original) +++ maven/sandbox/trunk/plugins/pom.xml Tue Aug 26 18:17:23 2008 @@ -30,6 +30,7 @@ <module>maven-shade-plugin</module> <module>maven-swizzle-plugin</module> <module>maven-xcode-plugin</module> + <module>maven-downloader-plugin</module> </modules> </project> \ No newline at end of file