You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by dj...@apache.org on 2012/01/24 01:54:07 UTC

svn commit: r1235100 - in /aries/trunk/versioning/org.apache.aries.versioning.plugin: pom.xml src/main/java/org/apache/aries/versioning/mojo/VersionCheckerMojo.java

Author: djencks
Date: Tue Jan 24 00:54:07 2012
New Revision: 1235100

URL: http://svn.apache.org/viewvc?rev=1235100&view=rev
Log:
ARIES-757 hook up versioning to aether to fetch old bundle

Modified:
    aries/trunk/versioning/org.apache.aries.versioning.plugin/pom.xml
    aries/trunk/versioning/org.apache.aries.versioning.plugin/src/main/java/org/apache/aries/versioning/mojo/VersionCheckerMojo.java

Modified: aries/trunk/versioning/org.apache.aries.versioning.plugin/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/versioning/org.apache.aries.versioning.plugin/pom.xml?rev=1235100&r1=1235099&r2=1235100&view=diff
==============================================================================
--- aries/trunk/versioning/org.apache.aries.versioning.plugin/pom.xml (original)
+++ aries/trunk/versioning/org.apache.aries.versioning.plugin/pom.xml Tue Jan 24 00:54:07 2012
@@ -9,7 +9,7 @@
     </parent>
     <groupId>org.apache.aries.versioning</groupId>
     <artifactId>org.apache.aries.versioning.plugin</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
     <packaging>maven-plugin</packaging>
     <name>org.apache.aries.versioning.plugin Maven Mojo</name>
     <dependencies>
@@ -38,7 +38,32 @@
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
-            <version>2.0</version>
+            <version>3.0.3</version>
+        </dependency>
+        <dependency>
+           <groupId>org.sonatype.aether</groupId>
+           <artifactId>aether-api</artifactId>
+           <version>1.11</version>
+         </dependency>
+         <dependency>
+           <groupId>org.sonatype.aether</groupId>
+           <artifactId>aether-util</artifactId>
+           <version>1.11</version>
+         </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-compat</artifactId>
+            <version>3.0.3</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>

Modified: aries/trunk/versioning/org.apache.aries.versioning.plugin/src/main/java/org/apache/aries/versioning/mojo/VersionCheckerMojo.java
URL: http://svn.apache.org/viewvc/aries/trunk/versioning/org.apache.aries.versioning.plugin/src/main/java/org/apache/aries/versioning/mojo/VersionCheckerMojo.java?rev=1235100&r1=1235099&r2=1235100&view=diff
==============================================================================
--- aries/trunk/versioning/org.apache.aries.versioning.plugin/src/main/java/org/apache/aries/versioning/mojo/VersionCheckerMojo.java (original)
+++ aries/trunk/versioning/org.apache.aries.versioning.plugin/src/main/java/org/apache/aries/versioning/mojo/VersionCheckerMojo.java Tue Jan 24 00:54:07 2012
@@ -21,6 +21,13 @@ import org.apache.aries.versioning.check
 import org.apache.aries.versioning.check.BundleInfo;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.sonatype.aether.RepositorySystem;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.repository.RemoteRepository;
+import org.sonatype.aether.resolution.ArtifactRequest;
+import org.sonatype.aether.resolution.ArtifactResult;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -28,6 +35,7 @@ import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.List;
 
 /**
  * Goal which touches a timestamp file.
@@ -39,24 +47,69 @@ import java.net.URLClassLoader;
 public class VersionCheckerMojo
     extends AbstractMojo
 {
+//    /**
+//     * Location of the file.
+//     * @parameter expression="${project.build.directory}/classes"
+//     * @required
+//     */
+//    private File oldFile;
+
     /**
-     * Location of the file.
-     * @parameter expression="${project.build.directory}/classes"
+     * name of old artifact in <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version> notation
+     * @parameter
      * @required
      */
-    private File oldFile;
+    private String oldArtifact;
+
     /**
      * Location of the file.
-     * @parameter expression="${project.build.directory}/classes"
+     * @parameter expression="${project.artifact.file}"
      * @required
      */
     private File newFile;
 
+    /**
+     * The entry point to Aether, i.e. the component doing all the work.
+     *
+     * @component
+     * @required
+     * @readonly
+     */
+    private RepositorySystem repoSystem;
+
+    /**
+     * The current repository/network configuration of Maven.
+     *
+     * @parameter default-value="${repositorySystemSession}"
+     * @required
+     * @readonly
+     */
+    private RepositorySystemSession repoSession;
+
+    /**
+     * The project's remote repositories to use for the resolution of project dependencies.
+     *
+     * @parameter default-value="${project.remoteProjectRepositories}"
+     * @readonly
+     */
+    private List<RemoteRepository> projectRepos;
+
+    /**
+     * The project's remote repositories to use for the resolution of plugins and their dependencies.
+     *
+     * @parameter default-value="${project.remotePluginRepositories}"
+     * @required
+     * @readonly
+     */
+    private List<RemoteRepository> pluginRepos;
+
+
+
     public void execute()
         throws MojoExecutionException
     {
         try {
-            BundleInfo oldBundle = getBundleInfo(oldFile);
+            BundleInfo oldBundle = getBundleInfo(resolve(oldArtifact));
             BundleInfo newBundle = getBundleInfo(newFile);
             String bundleSymbolicName = newBundle.getBundleManifest().getSymbolicName();
             URLClassLoader oldClassLoader = new URLClassLoader(new URL[] {oldBundle.getBundle().toURI().toURL()});
@@ -70,8 +123,33 @@ public class VersionCheckerMojo
         } catch (IOException e) {
 
         }
+    }
 
+    private File resolve(String oldArtifact) {
+        Artifact artifact = new DefaultArtifact(oldArtifact);
+        return resolve(artifact);
+    }
+
+    private File resolve(Artifact artifact) {
+        ArtifactRequest request = new ArtifactRequest();
+        request.setArtifact(artifact);
+        request.setRepositories(projectRepos);
+
+        getLog().debug("Resolving artifact " + artifact +
+                " from " + projectRepos);
+
+        ArtifactResult result;
+        try {
+            result = repoSystem.resolveArtifact(repoSession, request);
+        } catch (org.sonatype.aether.resolution.ArtifactResolutionException e) {
+            getLog().warn("could not resolve " + artifact, e);
+            return null;
+        }
 
+        getLog().debug("Resolved artifact " + artifact + " to " +
+                result.getArtifact().getFile() + " from "
+                + result.getRepository());
+        return result.getArtifact().getFile();
     }
 
     private BundleInfo getBundleInfo(File f) {