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) {