[jboss-svn-commits] JBL Code SVN: r14132 - in labs/jbossbuild/maven-plugins/tags: maven-jboss-retro-plugin-1.0-beta-1 and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 9 15:43:49 EDT 2007


Author: pgier
Date: 2007-08-09 15:43:49 -0400 (Thu, 09 Aug 2007)
New Revision: 14132

Added:
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/pom.xml
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveDependenciesMojo.java
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/util/
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/site/
Removed:
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/pom.xml
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java
   labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java
Log:
[maven-release-plugin]  copy for tag maven-jboss-retro-plugin-1.0-beta-1

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1 (from rev 12575, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin)

Deleted: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/pom.xml
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml	2007-06-14 11:58:41 UTC (rev 12575)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/pom.xml	2007-08-09 19:43:49 UTC (rev 14132)
@@ -1,102 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.jboss.maven.plugins</groupId>
-  <artifactId>maven-jboss-retro-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
-  <name>JBoss Retro Maven Plugin</name>
-  <version>0.9-SNAPSHOT</version>
-  <url>http://www.jboss.org</url>
-  <description>Maven plugin for jboss retro</description>
-  <scm>
-    <connection>scm:svn:https://svn.labs.jboss.org/labs/jbossbuild/maven-plugins/trunk/jboss-retro-maven-plugin</connection>
-  </scm>
-  <build>
-    <extensions>
-      <extension>
-	      <groupId>org.apache.maven.wagon</groupId>
-	      <artifactId>wagon-webdav</artifactId>
-	      <version>1.0-beta-2</version>
-      </extension>
-    </extensions>
-    <plugins>
-      <plugin>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.0</version>
-        <configuration>
-          <optimize>true</optimize>
-          <source>1.5</source>
-          <target>1.5</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-release-plugin</artifactId>
-        <configuration>
-          <tagBase>https://svn.labs.jboss.org/labs/jbossbuild/maven-plugins/tags</tagBase>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <repositories>
-    <repository>
-      <snapshots />
-      <id>jboss</id>
-      <name>JBoss Repository</name>
-      <url>http://repository.jboss.com/maven2/</url>
-    </repository>
-  </repositories>
-  <dependencies>
-    <dependency>
-      <groupId>jboss</groupId>
-      <artifactId>jboss-backport-concurrent</artifactId>
-      <version>2.1.0.GA</version>
-    </dependency>
-    <dependency>
-      <groupId>jboss</groupId>
-      <artifactId>javassist</artifactId>
-      <version>3.4.ga</version>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss</groupId>
-      <artifactId>jboss-retro</artifactId>
-      <version>1.1.0-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.ant</groupId>
-      <artifactId>ant</artifactId>
-      <version>1.7.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0.4</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-archiver</artifactId>
-      <version>2.2</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>1.2</version>
-    </dependency>
-  </dependencies>
-  <distributionManagement>
-    <repository>
-      <!-- Copy the distribution jar file to a local checkout of the maven repository 
-        -  This variable can be set in $MAVEN_HOME/conf/settings.xml -->
-      <id>repository.jboss.org</id>
-      <url>file://${maven.repository.root}</url>
-    </repository>
-    <snapshotRepository>
-      <id>snapshots.jboss.org</id>
-      <name>JBoss Snapshot Repository</name>
-      <url>dav:https://snapshots.jboss.org/maven2</url>
-    </snapshotRepository>
-  </distributionManagement>
-</project>
\ No newline at end of file

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/pom.xml (from rev 14131, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml)
===================================================================
--- labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/pom.xml	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/pom.xml	2007-08-09 19:43:49 UTC (rev 14132)
@@ -0,0 +1,157 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  
+  <modelVersion>4.0.0</modelVersion>
+  
+  <groupId>org.jboss.maven.plugins</groupId>
+  <artifactId>maven-jboss-retro-plugin</artifactId>
+  <packaging>maven-plugin</packaging>
+  <name>Maven JBoss Retro Plugin</name>
+  <version>1.0-beta-1</version>
+  <url>http://labs.jboss.com/maven-jboss-retro-plugin</url>
+  <description>Maven plugin for jboss retro</description>
+  <inceptionYear>2007</inceptionYear>
+  
+  <scm>
+    <connection>scm:svn:http://anonsvn.labs.jboss.org/labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1</connection>
+    <developerConnection>scm:svn:https://svn.labs.jboss.org/labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1</developerConnection>
+  </scm>
+  
+  <issueManagement>
+    <system>jira</system>
+    <url>http://jira.jboss.com/jira/browse/JBBUILD</url>
+  </issueManagement>
+  
+  <licenses>
+    <license>
+      <name>GNU Lesser General Public License</name>
+      <url>http://www.gnu.org/copyleft/lesser.html</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+
+  <developers>
+    <developer>
+      <id>pgier</id>
+      <name>Paul Gier</name>
+      <organization>JBoss, a division of Red Hat, Inc</organization>
+      <organizationUrl>http://www.jboss.org</organizationUrl>
+      <timezone>-5</timezone>
+    </developer>
+  </developers>
+  
+  <organization>
+    <name>JBoss, a division of Red Hat, Inc</name>
+    <url>http://www.jboss.org</url>
+  </organization>
+  
+  <build>
+    <extensions>
+      <extension>
+	      <groupId>org.apache.maven.wagon</groupId>
+	      <artifactId>wagon-webdav</artifactId>
+	      <version>1.0-beta-2</version>
+      </extension>
+    </extensions>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <optimize>true</optimize>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-release-plugin</artifactId>
+        <configuration>
+          <tagBase>https://svn.labs.jboss.org/labs/jbossbuild/maven-plugins/tags</tagBase>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <minmemory>128m</minmemory>
+          <maxmemory>512</maxmemory>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jxr-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </reporting>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.jboss</groupId>
+      <artifactId>jboss-retro</artifactId>
+      <version>[1.1.2, 1.2.0)</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>2.0.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-archiver</artifactId>
+      <version>2.2</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>1.4.1</version>
+    </dependency>
+  </dependencies>
+  
+  <distributionManagement>
+    <repository>
+      <!-- Copy the distribution jar file to a local checkout of the maven repository 
+        -  This variable can be set in $MAVEN_HOME/conf/settings.xml -->
+      <id>repository.jboss.org</id>
+      <url>file://${maven.repository.root}</url>
+    </repository>
+    <snapshotRepository>
+      <id>snapshots.jboss.org</id>
+      <name>JBoss Snapshot Repository</name>
+      <url>dav:https://snapshots.jboss.org/maven2</url>
+    </snapshotRepository>
+    <site>
+      <id>www.jboss.org</id>
+      <name>www.jboss.org</name>
+      <!-- This should be set to a local checkout of the jboss.org/jbossretro freezone. -->
+      <url>file://${maven.jboss.retro.plugin.site.root}</url>
+    </site>
+  </distributionManagement>
+  
+</project>
\ No newline at end of file

Deleted: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java	2007-06-14 11:58:41 UTC (rev 12575)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java	2007-08-09 19:43:49 UTC (rev 14132)
@@ -1,189 +0,0 @@
-package org.jboss.maven.plugins.retro;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.project.MavenProject;
-import org.jboss.ant.tasks.retrocheck.Checker;
-
-/**
- * Maven wrapper for JBoss Retro.  By default
- * it will bind to the process classes phase, which takes
- * place immediately after the compile phase.
- * NOTE: The retro check functionality is not complete.  Please
- * do not use this part of the plugin in a production environment.
- * 
- * @phase process-classes
- * @goal retro-check
- * 
- */
-public class RetroCheckMojo extends AbstractMojo
-{
-
-   //private static String lSep = System.getProperty("line.separator");
-
-   /**
-    * The Maven Project Object
-    *
-    * @parameter expression="${project}"
-    * @required
-    */
-   protected MavenProject project;
-
-   /**
-    * The Maven Project Helper Object
-    *
-    * @component
-    * @required
-    */
-   protected org.apache.maven.project.MavenProjectHelper projectHelper;
-
-   /**
-    * The Maven Plugin Object
-    *
-    * @parameter expression="${plugin.components}"
-    * @required
-    * @readonly
-    */
-   protected List pluginComponents;
-
-   /**
-    * The plugin dependencies.
-    *
-    * @parameter expression="${plugin.artifacts}"
-    * @required
-    * @readonly
-    */
-   private List pluginArtifacts;
-
-   /**
-    * Project classpath.
-    *
-    * @parameter expression="${project.compileClasspathElements}"
-    * @required
-    * @readonly
-    */
-   private List classpathElements;
-
-   /**
-    * @parameter expression="${project.pluginArtifacts}"
-    * @required
-    * @readonly
-    */
-   //private HashSet pluginArtifacts;
-   /**
-    * The directory for compiled classes.
-    *
-    * @parameter expression="${project.build.outputDirectory}"
-    * @required
-    * @readonly
-    */
-   private File targetClassesDirectory;
-
-   /**
-    * The directory for compiled classes.
-    *
-    * @parameter expression="${project.build.directory}"
-    * @required
-    * @readonly
-    */
-   private File targetDirectory;
-
-   /**
-    * @parameter
-    */
-   private boolean verbose = false;
-
-   /**
-    * @parameter
-    */
-   private boolean suppress = true;
-
-   public void execute()
-   {
-      this.getLog().info("[retro-check] Checking classes for jdk14");
-
-      if (!project.getArtifact().getType().equalsIgnoreCase("jar")) {
-         this.getLog().info("[retro-check] Project " + project.getName() + " is not"
-               + " a jar project.  No retro compile needed.");
-         return;
-      }
-      ArrayList<String> argsList = new ArrayList<String>();
-
-      if (verbose)
-      {
-         argsList.add("-verbose");
-      }
-      if (suppress)
-      {
-         argsList.add("-suppress");
-      }
-      /*argsList.add("-destdir");
-      try
-      {
-         argsList.add(targetDirectory.getCanonicalPath() + "/classes-retro");
-      }
-      catch (Exception e)
-      {
-         this.getLog().error(e);
-      }*/
-      argsList.add("-cp");
-      StringBuilder classpath = new StringBuilder();
-      String pathSeparator = System.getProperty("path.separator");
-      for (Object element : classpathElements)
-      {
-         classpath.append(element);
-         classpath.append(pathSeparator);
-      }
-
-      for (Object artifact : pluginArtifacts)
-      {
-         try
-         {
-            File artifactFile = ((Artifact) artifact).getFile();
-            if (artifactFile != null)
-            {
-               classpath.append(artifactFile.getCanonicalPath());
-               classpath.append(pathSeparator);
-            }
-         }
-         catch (IOException ioe)
-         {
-            this.getLog().warn("Could not get filename");
-         }
-      }
-      
-      argsList.add(classpath.toString());
-
-      try
-      {
-         argsList.add(targetDirectory.getCanonicalPath() + 
-               System.getProperty("file.separator") + "classes-retro");
-      }
-      catch (IOException ioe)
-      {
-         this.getLog().error(ioe.toString());
-      }
-
-      String[] args = new String[argsList.size()];
-      for (int i = 0; i < args.length; ++i)
-      {
-         args[i] = argsList.get(i);
-      }
-
-      Checker checker = new Checker();
-      try
-      {
-         checker.check(args);
-      }
-      catch (Exception e)
-      {
-         this.getLog().error(e);
-      }
-
-   }
-}

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java (from rev 14098, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java)
===================================================================
--- labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java	2007-08-09 19:43:49 UTC (rev 14132)
@@ -0,0 +1,342 @@
+package org.jboss.maven.plugins.retro;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * Mojo for running the retro check test.  
+ * NOTE: The retro check functionality is meant to be used with
+ * the jdk1.5 to 1.4 conversion.  Other types of class weaving do
+ * not need to use this mojo.  This mojo should be run using 
+ * a java1.4 jvm, which can be set using the jvm configuration 
+ * parameter.
+ * 
+ * @phase test
+ * @goal retro-check
+ * 
+ */
+public class RetroCheckMojo extends AbstractMojo
+{
+
+   public static final String JBOSS_RETRO_ARTIFACTID = "jboss-retro";
+   
+   /**
+    * The Maven Project Object
+    *
+    * @parameter expression="${project}"
+    * @required
+    */
+   protected MavenProject project;
+
+   /**
+    * The Maven Project Helper Object
+    *
+    * @component
+    * @required
+    */
+   protected org.apache.maven.project.MavenProjectHelper projectHelper;
+
+   /**
+    * INTERNAL : Artifact factory, needed to download dependencies
+    *
+    * @component role="org.apache.maven.artifact.factory.ArtifactFactory"
+    * @required
+    * @readonly
+    */
+   protected ArtifactFactory artifactFactory;
+
+   /**
+    * INTERNAL : Artifact resolver, needed to download dependencies
+    *
+    * @component role="org.apache.maven.artifact.resolver.ArtifactResolver"
+    * @required
+    * @readonly
+    */
+   protected ArtifactResolver artifactResolver;
+   
+   /**
+    * INTERNAL : Local maven repository.
+    *
+    * @parameter expression="${localRepository}"
+    * @required
+    * @readonly
+    */
+   protected ArtifactRepository localRepository;
+   
+   /**
+    * Option to specify the jvm (or path to the java executable) to use with the forking options. For the default, the
+    * jvm will be the same as the one used to run Maven.
+    * 
+    * @parameter
+    * @required
+    */
+   private String jvm;
+
+   /**
+    * The Maven Plugin components
+    *
+    * @parameter expression="${plugin.components}"
+    * @required
+    * @readonly
+    */
+   protected List pluginComponents;
+
+   /**
+    * The plugin artifacts.
+    *
+    * @parameter expression="${plugin.artifacts}"
+    * @required
+    * @readonly
+    */
+   private List pluginArtifacts;
+   
+   /**
+    * The path to the classes to be checked, relative to
+    * the build directory.  Defaults to a value of
+    * "classes-weaved" which means that classes in the direcotry
+    * target/classes-weaved will be checked.
+    * @parameter
+    * @required
+    */
+   private String checkDirectory;
+   
+   /**
+    * Enable verbose output
+    * @parameter
+    */
+   private boolean verbose = false;
+
+   /**
+    * Suppress output
+    * @parameter
+    */
+   private boolean suppress = false;
+
+   /**
+    * Location of the retro check jar to include in the classpath
+    */
+   private File jbossRetroCheckJar = null;
+   
+   /**
+    * Location of the retro runtime jar to include in the classpath
+    */
+   private File jbossRetroRtJar = null;
+   
+   /**
+    * Ignore check errors.  If set to true, the build will continue
+    * regardless of whether there are check errors.
+    * Default is false.
+    * 
+    * @parameter
+    * 
+    */
+   private boolean ignoreErrors = false;
+   
+   public void execute() throws MojoExecutionException
+   {
+      if ( jvm == null || jvm.equals("") || ! new File(jvm).exists())
+      {
+          getLog().error("Unable to locate jvm: " + jvm);
+          getLog().error("Skipping retro check");
+          return;
+      }
+
+      // Make sure checker and runtime available on the classpath
+      this.resolveCheckerLocation();
+      
+      this.getLog().info("Checking classes for jdk14");
+      
+      ArrayList<String> argsList = new ArrayList<String>();
+
+      argsList.add("-cp");
+      
+      String classpath = this.createCheckerClasspath();
+      getLog().debug("Using checker classpath: " + classpath);
+      argsList.add(classpath);
+
+      argsList.add("org.jboss.ant.tasks.retrocheck.Checker");
+      
+      if (verbose)
+      {
+         argsList.add("-verbose");
+      }
+      
+      if (suppress)
+      {
+         argsList.add("-suppress");
+      }
+
+      String retroClassesDir = project.getBuild().getDirectory() + File.separator + checkDirectory;
+      argsList.add(retroClassesDir);
+
+      String[] args = new String[argsList.size()];
+      args = argsList.toArray(args);
+
+      Commandline cli = new Commandline();
+   
+      cli.setExecutable( jvm );
+      cli.addArguments(args);
+      
+      StreamConsumer out = new MojoLogStreamConsumer();
+      StreamConsumer err = new MojoLogStreamConsumer();
+
+      try
+      {
+         int returnCode = CommandLineUtils.executeCommandLine( cli, out, err );
+         if ( ( ! ignoreErrors ) && returnCode != 0)
+         {
+            throw new MojoExecutionException("There were errors during the retro check");
+         }
+      }
+      catch ( CommandLineException e )
+      {
+         throw new MojoExecutionException( "Error while executing forked tests.", e );
+      }
+   }
+
+   public String createCheckerClasspath() 
+   {
+      StringBuilder classpath = new StringBuilder();
+
+      String fileSep = System.getProperty("file.separator");
+      String weavedClassesDir = project.getBuild().getDirectory() + fileSep + checkDirectory;
+      classpath.append(weavedClassesDir);
+      classpath.append(File.pathSeparator);
+            
+      for (Object artifactObj : pluginArtifacts)
+      {
+         Artifact artifact = (Artifact)artifactObj;
+         if (artifact.getArtifactId().equals(JBOSS_RETRO_ARTIFACTID) && artifact.getClassifier() == null)
+         {
+            // We don't want to include the jboss-retro dependency for the checks
+            // because the jboss-retro jar is jdk1.5 and we should be running under 1.4
+            // and the checker and rt jars will have everything needed for the checks
+            continue;
+         }
+         try
+         {
+            File artifactFile = artifact.getFile();
+            if (artifactFile != null)
+            {
+               classpath.append(artifactFile.getCanonicalPath());
+               classpath.append(File.pathSeparator);
+            }
+         }
+         catch (IOException ioe)
+         {
+            this.getLog().warn("Could not get filename");
+         }
+      }
+      classpath.append(this.jbossRetroCheckJar.getAbsolutePath());
+      classpath.append(File.pathSeparator);
+      classpath.append(this.jbossRetroRtJar.getAbsolutePath());
+      classpath.append(File.pathSeparator);
+      
+      return classpath.toString();
+   }
+   
+   /** 
+    * Resolve the location of the Checker class, and the retro runtime classes  
+    *
+    */
+   public void resolveCheckerLocation() throws MojoExecutionException
+   {
+      // Figure out which verion of retro should be used
+      String jbossRetroVersion = null;
+      
+      // If we are checking jboss retro itself, we have to do this to make sure 
+      // the local files are used instead of repository files.
+      if (project.getArtifactId().equals(JBOSS_RETRO_ARTIFACTID))
+      {
+         jbossRetroVersion = project.getVersion();
+         
+         // Determine if the checker and runtime are attached to the project 
+         List attachedArtifacts = project.getAttachedArtifacts();
+         for (Object artifactObj : attachedArtifacts) {
+            Artifact artifact = (Artifact)artifactObj;
+            if (artifact.getArtifactId().equals(JBOSS_RETRO_ARTIFACTID))
+            {
+               if (artifact.getClassifier().equals("retrocheck")) 
+               {
+                  this.jbossRetroCheckJar = artifact.getFile();
+               }
+               else if(artifact.getClassifier().equals("rt")) 
+               {
+                  this.jbossRetroRtJar = artifact.getFile();
+               }
+            }
+         }
+      }
+      
+      if (this.jbossRetroCheckJar != null && this.jbossRetroRtJar != null) 
+      {
+         // We found the checker and runtime attached, so just return
+         return;
+      }
+      
+      Iterator iter = this.pluginArtifacts.iterator();
+      while(iter.hasNext() && jbossRetroVersion==null) {
+         Artifact nextArtifact = (Artifact)iter.next();
+         if (nextArtifact.getArtifactId().equals(JBOSS_RETRO_ARTIFACTID) 
+               && nextArtifact.getClassifier() == null)
+         {
+            jbossRetroVersion = nextArtifact.getVersion();          
+         }
+      }
+
+      // Get the checker and runtime from the repository
+      Artifact checkerArtifact = artifactFactory.createArtifactWithClassifier("org.jboss", JBOSS_RETRO_ARTIFACTID, jbossRetroVersion, "jar", "retrocheck");            
+      Artifact runtimeArtifact = artifactFactory.createArtifactWithClassifier("org.jboss", JBOSS_RETRO_ARTIFACTID, jbossRetroVersion, "jar", "rt");            
+      try 
+      {
+         artifactResolver.resolve(checkerArtifact, project.getRemoteArtifactRepositories(), localRepository);
+         artifactResolver.resolve(runtimeArtifact, project.getRemoteArtifactRepositories(), localRepository);
+      }
+      catch (ArtifactResolutionException are) 
+      {
+         throw new MojoExecutionException("Problem resolving artifact: " + are);
+      }
+      catch (ArtifactNotFoundException are) 
+      {
+         throw new MojoExecutionException("Problem resolving artifact: " + are);
+      }
+      
+      this.jbossRetroCheckJar = checkerArtifact.getFile();
+      this.jbossRetroRtJar = runtimeArtifact.getFile();
+   }
+   
+
+   /**
+    * Consume and log command output from the Checker
+    * @author pgier
+    *
+    */
+   public class MojoLogStreamConsumer implements StreamConsumer
+   {
+      public void consumeLine(String line)
+      {
+         getLog().info(line);
+      }
+   }
+
+}
+
+
+

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveDependenciesMojo.java (from rev 14119, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveDependenciesMojo.java)
===================================================================
--- labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveDependenciesMojo.java	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveDependenciesMojo.java	2007-08-09 19:43:49 UTC (rev 14132)
@@ -0,0 +1,520 @@
+package org.jboss.maven.plugins.retro;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.deployer.ArtifactDeployer;
+import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
+import org.apache.maven.artifact.installer.ArtifactInstallationException;
+import org.apache.maven.artifact.installer.ArtifactInstaller;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.metadata.ResolutionGroup;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+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.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.ProjectArtifactMetadata;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+import org.jboss.weaver.WeaveRunner;
+import org.jboss.weaver.Weaver;
+
+/**
+ * This Mojo can be used to weave project dependencies.
+ * WARNING: Implementation of this mojo is not complete!
+ * 
+ * @goal weave-dependencies
+ * @requiresDependencyResolution
+ */
+public class WeaveDependenciesMojo extends AbstractMojo
+{
+   public static final String JBOSS_RETRO_ARTIFACTID = "jboss-retro";
+   
+   protected final String fileSep = File.separator;
+
+   protected final String pathSep = File.pathSeparator;
+
+   /**
+    * The Maven Project Object
+    *
+    * @parameter expression="${project}"
+    * @required
+    * @readonly
+    */
+   protected MavenProject project;
+
+   /**
+    * The Maven Project Helper Object
+    *
+    * @component
+    * @required
+    * @readonly
+    */
+   protected org.apache.maven.project.MavenProjectHelper projectHelper;
+
+   /**
+    * INTERNAL : Artifact resolver, needed to download dependencies
+    *
+    * @component role="org.apache.maven.artifact.resolver.ArtifactResolver"
+    * @required
+    * @readonly
+    */
+   protected ArtifactResolver artifactResolver;
+
+   /**
+    * INTERNAL : Artifact resolver, needed to download dependencies
+    *
+    * @component role="org.apache.maven.artifact.metadata.ArtifactMetadataSource"
+    * @required
+    * @readonly
+    */
+   protected ArtifactMetadataSource artifactMetadataSource;
+   
+   /**
+    * INTERNAL : Local maven repository.
+    *
+    * @parameter expression="${localRepository}"
+    * @required
+    * @readonly
+    */
+   protected ArtifactRepository localRepository;
+   
+   /**
+    * The path for a specific local repository directory. It will wrap into an <code>ArtifactRepository</code>
+    * with <code>localRepoId</code> as <code>id</code> and with default <code>repositoryLayout</code>
+    *
+    * @parameter expression="${localRepositoryPath}"
+    */
+   private File localRepositoryPath;
+
+   /**
+    * The <code>id</code> for the <code>localRepo</code>
+    *
+    * @parameter expression="${localRepositoryId}"
+    */
+   private String localRepositoryId;
+
+   /**
+    * Map that contains the layouts
+    *
+    * @component role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
+    */
+   private Map repositoryLayouts;
+
+   /**
+    * A maven component to install artifacts to a local repository.
+    * @parameter expression="${component.org.apache.maven.artifact.installer.ArtifactInstaller}"
+    * @required
+    * @readonly
+    */
+   protected ArtifactInstaller installer;
+
+   /**
+    * Maven component to deploy artifacts to remote repository.
+    * @parameter expression="${component.org.apache.maven.artifact.deployer.ArtifactDeployer}"
+    * @required
+    * @readonly
+    */
+   private ArtifactDeployer deployer;
+
+   /**
+    * The plugin dependencies.
+    *
+    * @parameter expression="${plugin.artifacts}"
+    * @required
+    * @readonly
+    */
+   protected List pluginArtifacts;
+
+   /**
+    * Include verbose output.
+    * @parameter default-value="false"
+    */
+   protected boolean verbose;
+   
+   /**
+    * URL where the artifact will be deployed. <br/>
+    * ie ( file://C:\m2-repo or scp://host.com/path/to/repo )
+    * Note: this parameter is required if deployDependencies is set 
+    * to true.
+    * 
+    * @parameter
+    * 
+    */
+   private String deployUrl;
+
+   /**
+    * Suppress output information.
+    * @parameter default-value="true"
+    */
+   protected boolean suppress;
+
+   /**
+    * The type of remote repository layout to deploy to. Try <i>legacy</i> for 
+    * a Maven 1.x-style repository layout.
+    * 
+    * @parameter expression="${repositoryLayout}" default-value="default"
+    * @required
+    */
+   private String repositoryLayout;
+
+   /**
+    * The Weaver class to use for weaving the classes.
+    * Defaults to org.jboss.weaver.Weaver
+    * Any subclass of org.jboss.weaver.Weaver can be used
+    * 
+    * @parameter default-value="org.jboss.weaver.Weaver"
+    */
+   protected String weaverClass;
+
+   /**
+    * The jar file or directory where the weaved classes
+    * should be written.
+    *
+    * @parameter expression="${project.build.directory}/weaved-dependencies"
+    */
+   protected String dependencyOutputDirectory;
+
+   /**
+    * Component used to create a repository
+    *
+    * @component
+    */
+   private ArtifactRepositoryFactory repositoryFactory;
+
+   /**
+    * Server Id to map on the &lt;id&gt; under &lt;server&gt; section of settings.xml
+    * In most cases, this parameter will be required for authentication.
+    *
+    * @parameter expression="${repositoryId}" default-value="remote-repository"
+    * @required
+    */
+   private String repositoryId;
+   
+   /**
+    * Whether to deploy snapshots with a unique version or not.
+    *
+    * @parameter expression="${uniqueVersion}" default-value="true"
+    */
+   private boolean uniqueVersion;
+
+   /**
+    * Deploy weaved dependencies to a repository.
+    * @parameter default-value="false"
+    */
+   private boolean deployDependencies;
+   
+   /**
+    * Install weaved dependencies to a local repository.
+    * @parameter default-value="false"
+    * 
+    */
+   private boolean installDependencies;
+   
+   /**
+    * Main plugin execution method
+    */   
+   public void execute() throws MojoFailureException, MojoExecutionException
+   {
+      // Override the default local repository
+      if ( StringUtils.isNotEmpty( localRepositoryId ) && ( localRepositoryPath != null ) )
+      {
+          try
+          {
+              ArtifactRepositoryLayout layout;
+
+              layout = ( ArtifactRepositoryLayout ) repositoryLayouts.get( repositoryLayout );
+              
+              getLog().info("Layout: " + layout.getClass());
+              localRepository = new DefaultArtifactRepository( localRepositoryId, localRepositoryPath.toURL()
+                  .toString(), layout );
+          }
+          catch ( MalformedURLException e )
+          {
+              throw new MojoExecutionException( "MalformedURLException: " + e.getMessage(), e );
+          }
+      }
+      
+      this.getLog().info("Weaving dependencies");
+      
+      long start = System.currentTimeMillis();
+      
+      weaveDependencies();
+      
+      long end = System.currentTimeMillis();
+      this.getLog().info("Weaving complete: " + (end - start) + "ms");
+   }
+   
+   protected void weaveDependencies() throws MojoFailureException, MojoExecutionException 
+   {      
+      Set dependencyArtifacts = project.getDependencyArtifacts();
+      Map weavedDependencies = new HashMap();
+      
+      try 
+      {
+         ArtifactResolutionResult result = artifactResolver.resolveTransitively(dependencyArtifacts, 
+               project.getArtifact(), project.getRemoteArtifactRepositories(), localRepository, artifactMetadataSource);
+         Set artifacts = result.getArtifacts();
+         
+         File parentDir = new File(dependencyOutputDirectory);
+         if ( ! parentDir.exists()) {
+            parentDir.mkdirs();
+         }
+         
+         for (Object artifactObj : artifacts) 
+         {
+            Artifact artifact = (Artifact)artifactObj;
+            
+            WeaveRunner weaveRunner = this.createWeaveRunner(artifacts);
+            File outputFile = new File(dependencyOutputDirectory + File.separator + artifact.getFile().getName());
+            weaveRunner.setOutputPath(outputFile.getAbsolutePath());
+            
+            try
+            {
+               getLog().info("Weaving " + artifact);
+               weaveRunner.addSourcePath(artifact.getFile().getAbsolutePath());
+               weaveRunner.weave();
+            }
+            catch (Exception e)
+            {
+               e.printStackTrace();
+            }
+            weavedDependencies.put(artifact, outputFile);
+         }
+
+         if (this.installDependencies)
+         {
+            this.installDependencies(weavedDependencies);
+         }
+         
+         if (this.deployDependencies)
+         {
+            deployDependencies(weavedDependencies);
+         }
+      }
+      catch (ArtifactResolutionException e) 
+      {
+         throw new MojoExecutionException(e.getMessage(), e);
+      }
+      catch (ArtifactNotFoundException e) 
+      {
+         throw new MojoExecutionException(e.getMessage(), e);
+      }
+      catch (ArtifactInstallationException e) 
+      {
+         throw new MojoExecutionException(e.getMessage(), e);
+      }
+      
+   }
+   
+   public WeaveRunner createWeaveRunner(Set artifacts) throws MojoFailureException
+   {
+      
+      Weaver weaver = this.instantiateWeaver();
+      String classpath = this.buildClasspath(artifacts);
+      weaver.setClasspath(classpath);
+      weaver.init();
+      
+      WeaveRunner weaveRunner = new WeaveRunner(weaver);
+      weaveRunner.setVerbose(verbose);
+      weaveRunner.setSuppress(suppress);
+      weaveRunner.setUsingSystemClasspath(false);
+      weaveRunner.setOutputToJar(true);
+      
+      return weaveRunner;
+   }
+      
+   /**
+    * Generates a classpath string based on the resolved dependencies.
+    * @return The classpath string
+    */
+   protected String buildClasspath(Set artifacts) {
+      StringBuilder classpath = new StringBuilder();
+
+
+      for (Object artifactObj : artifacts)
+      {
+         Artifact artifact = (Artifact)artifactObj;
+         classpath.append(artifact.getFile().getAbsolutePath());
+         classpath.append(pathSep);
+      }
+      
+      for (Object artifactObj : pluginArtifacts)
+      {
+         try
+         {
+            Artifact artifact = (Artifact) artifactObj;
+            if (artifact.getFile() != null)
+            {
+               classpath.append(artifact.getFile().getCanonicalPath());
+               classpath.append(pathSep);
+            }
+         }
+         catch (IOException ioe)
+         {
+            this.getLog().warn("Could not get filename");
+         }
+      }
+      return classpath.toString();
+   }
+      
+   /**
+    * This method creates the weaver instance.  Subclass mojos
+    * can use this class to override the default weaver configuration.
+    * @return The weaver instance
+    */
+   protected Weaver instantiateWeaver() throws MojoFailureException {
+      // We have to set the classpath first because the initialization
+      // may require access to the classpath.
+      Weaver weaver = null;
+
+      try {
+         weaver = (Weaver)Class.forName(weaverClass).newInstance();
+      } catch (Exception e) {
+         getLog().error("Unable to instantiate weaver class: " + this.weaverClass);
+         getLog().error(e.getMessage());
+         throw new MojoFailureException(e.getMessage());
+      }
+      
+      return weaver;
+   }
+   
+   protected File getPomFile(Artifact artifact) throws MojoExecutionException
+   {
+      Artifact pomArtifact = null;
+      try
+      {
+         ResolutionGroup resGroup = artifactMetadataSource.retrieve(artifact, localRepository, project
+               .getRemoteArtifactRepositories());
+         pomArtifact = resGroup.getPomArtifact();
+         artifactResolver.resolve(pomArtifact, project.getRemoteArtifactRepositories(), localRepository);
+      }
+      catch (ArtifactMetadataRetrievalException e)
+      {
+         throw new MojoExecutionException( e.getMessage(), e);
+      }
+      catch (ArtifactResolutionException e)
+      {
+         throw new MojoExecutionException( e.getMessage(), e);
+      }
+      catch (ArtifactNotFoundException e)
+      {
+         throw new MojoExecutionException( e.getMessage(), e);
+      }
+      
+      if (pomArtifact == null)
+      {
+         return null;
+      }
+      else
+      {
+         return pomArtifact.getFile();
+      }
+   }
+   
+   private void installDependencies(Map artifacts) throws MojoExecutionException, ArtifactInstallationException
+   {
+      for (Object artifactObj : artifacts.keySet())
+      {
+         Artifact artifact = (Artifact)artifactObj;
+         File weavedArtifactFile = (File)artifacts.get(artifact);
+         
+         attachPomMetadata(artifact);
+         
+         installer.install(weavedArtifactFile, artifact, localRepository);
+      }
+   }
+
+   private void deployDependencies(Map artifacts) throws MojoExecutionException
+   {
+      getLog().info("Deploying dependencies");
+      ArtifactRepositoryLayout layout = ( ArtifactRepositoryLayout ) repositoryLayouts.get( repositoryLayout );
+      if (deployUrl == null) 
+      {
+         throw new MojoExecutionException("Parameter deployUrl must be set to a valid URL when deploying artifacts");
+      }
+      ArtifactRepository deploymentRepository =
+          repositoryFactory.createDeploymentArtifactRepository( repositoryId, deployUrl, layout, uniqueVersion );
+
+      String protocol = deploymentRepository.getProtocol();
+
+      if ( protocol.equals( "" ) || protocol == null )
+      {
+         throw new MojoExecutionException( "No transfer protocol found." );
+      }
+      
+      for (Object artifactObj : artifacts.keySet())
+      {
+         Artifact artifact = (Artifact)artifactObj;
+         File weavedArtifactFile = (File)artifacts.get(artifact);
+         
+         attachPomMetadata(artifact);
+         
+         try
+         {
+            //getLog().info("Deploying " + artifact);
+            getDeployer().deploy( weavedArtifactFile, artifact, deploymentRepository, getLocalRepository() );
+         }
+         catch ( ArtifactDeploymentException e )
+         {
+            throw new MojoExecutionException( e.getMessage(), e );
+         }
+      }
+   }
+   
+   private void attachPomMetadata(Artifact artifact) throws MojoExecutionException
+   {
+      
+      File pomFile = getPomFile(artifact);
+      File retroPomFile = new File(this.dependencyOutputDirectory + File.separator + artifact.getArtifactId() + "-" + artifact.getVersion() + ".pom");
+      
+      try 
+      {
+         FileUtils.copyFile(pomFile, retroPomFile);
+      }
+      catch (IOException ioe) 
+      {
+         throw new MojoExecutionException( ioe.getMessage(), ioe );
+      }
+      
+      ArtifactMetadata metadata = new ProjectArtifactMetadata( artifact, retroPomFile );
+      artifact.addMetadata( metadata );
+   }
+
+   public ArtifactDeployer getDeployer()
+   {
+      return deployer;
+   }
+
+   public void setDeployer(ArtifactDeployer deployer)
+   {
+      this.deployer = deployer;
+   }
+
+   public ArtifactRepository getLocalRepository()
+   {
+      return localRepository;
+   }
+
+   public void setLocalRepository(ArtifactRepository localRepository)
+   {
+      this.localRepository = localRepository;
+   }
+         
+}

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java (from rev 14119, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java)
===================================================================
--- labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java	2007-08-09 19:43:49 UTC (rev 14132)
@@ -0,0 +1,276 @@
+package org.jboss.maven.plugins.retro;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.filefilter.NameFileFilter;
+import org.apache.commons.io.filefilter.TrueFileFilter;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import org.jboss.maven.plugins.retro.util.JarUtil;
+import org.jboss.weaver.WeaveRunner;
+import org.jboss.weaver.Weaver;
+
+/**
+ * Maven plugin for JBoss Retro Weaver.  This can be used to 
+ * do byte code weaving on classes in jars and directories.
+ * By default the weaver will weave the main classes
+ * and output the result to a jar with the specified classifier.
+ * 
+ * @phase process-classes
+ * @goal weave
+ * 
+ */
+public class WeaveMojo extends AbstractMojo
+{
+   public static final String JBOSS_RETRO_ARTIFACTID = "jboss-retro";
+   
+   protected final String fileSep = File.separator;
+
+   protected final String pathSep = File.pathSeparator;
+
+   /**
+    * List of the jar file entries
+    */
+   //private ArrayList<JarFileEntry> fileEntries = new ArrayList<JarFileEntry>();
+
+   /**
+    * The Maven Project Object
+    *
+    * @parameter expression="${project}"
+    * @required
+    * @readonly
+    */
+   protected MavenProject project;
+
+   /**
+    * The Maven Project Helper Object
+    *
+    * @component
+    * @required
+    * @readonly
+    */
+   protected org.apache.maven.project.MavenProjectHelper projectHelper;
+
+   /**
+    * The plugin dependencies.
+    *
+    * @parameter expression="${plugin.artifacts}"
+    * @required
+    * @readonly
+    */
+   protected List pluginArtifacts;
+
+   /**
+    * Project classpath.
+    *
+    * @parameter expression="${project.compileClasspathElements}"
+    * @required
+    * @readonly
+    */
+   protected List classpathElements;
+   
+   /**
+    * The directory for compiled classes.
+    *
+    * @parameter expression="${project.build.outputDirectory}"
+    * @required
+    */
+   protected File classesDirectory;
+
+   /**
+    * Include verbose output.
+    * @parameter
+    */
+   protected boolean verbose = false;
+
+   /**
+    * The Weaver class to use for weaving the classes.
+    * Defaults to org.jboss.weaver.Weaver
+    * Any subclass of org.jboss.weaver.Weaver can be used
+    * 
+    * @parameter
+    */
+   protected String weaverClass = "org.jboss.weaver.Weaver";
+
+   /**
+    * The directory where the weaved classes
+    * should be written.
+    * @parameter expression="${project.build.directory}/classes-weaved"
+    */
+   protected File outputDirectory;
+   
+   /**
+    * Attach a jar of the weaved classes to the build lifecycle.  This will
+    * allow the weaved jar to be deployed with the other build artifacts.
+    * @parameter
+    */
+   protected boolean attachJar = false;
+   
+   /**
+    * Classifier to append to the weaved output file (artifact).
+    * Defaults to null.  If the classifier is null, then the jar
+    * of the weaved classes will replace the main artifact.
+    * 
+    * @parameter
+    */
+   protected String classifier;
+   
+   /**
+    * Suppress output information.
+    * @parameter
+    */
+   protected boolean suppress = true;
+
+   /**
+    * Main plugin execution method
+    */   
+   public void execute() throws MojoFailureException
+   {
+      if ( ( ! this.getClassesDirecotry().exists()) 
+            || ( ! this.getClassesDirecotry().isDirectory()))
+      {
+         getLog().info("No classes found to weave.");
+         return;
+      }
+      
+      this.getLog().info("Weaving classes in: " + this.getClassesDirecotry());
+      long start = System.currentTimeMillis();
+      
+      weaveClasses();
+      if (this.attachJar) 
+      {
+         String jarFilePath = project.getBuild().getDirectory()
+            + File.separator + project.getArtifactId() + "-" + this.getJarClassifier() + ".jar";
+         try 
+         {
+            File jarFile = JarUtil.createJarFile(this.getOutputPath(), jarFilePath);
+            projectHelper.attachArtifact(project, jarFile, this.getJarClassifier());
+         }
+         catch (IOException ioe) 
+         {
+            getLog().warn("Unable to create Jar file: " + ioe);
+         }
+      }
+      
+      long end = System.currentTimeMillis();
+      this.getLog().info("Weaving complete: " + (end - start) + "ms");
+   }
+   
+   protected void weaveClasses() throws MojoFailureException {
+      // Initialize the WeaveRunner using plugin params
+      Weaver weaver = instantiateWeaver();
+      weaver.setClasspath(this.buildClasspath());
+      weaver.init();
+      WeaveRunner weaveRunner = new WeaveRunner(weaver);
+
+      weaveRunner.setVerbose(verbose);
+      weaveRunner.setSuppress(suppress);
+      weaveRunner.setUsingSystemClasspath(false);
+      
+      weaveRunner.setOutputPath(getOutputPath()); 
+      
+      try
+      {
+         weaveRunner.addSourcePath(this.getClassesDirecotry().getAbsolutePath());
+         weaveRunner.weave();
+      }
+      catch (Exception e)
+      {
+         this.getLog().error(e);
+         e.printStackTrace();
+      }
+   }
+   
+   /**
+    * Generates a classpath string based on the compile class path
+    * and the plugin dependencies.
+    * @return
+    */
+   protected String buildClasspath() {
+      StringBuilder classpath = new StringBuilder();
+
+      List cpElements = this.getClasspathElements();
+      for (Object element : cpElements)
+      {
+         classpath.append(element);
+         classpath.append(pathSep);
+      }
+      
+      // If the weaver classes can be found in the source directory 
+      // (i.e. we are weaving jboss retro), then we don't want the 
+      // retro jar from the plugin dependency to be pulled in from the repo.
+      boolean useRetroDep = true;
+      NameFileFilter nameFilter = new NameFileFilter("Weaver.class");
+      Collection weaverClassFiles = FileUtils.listFiles(this.getClassesDirecotry(), nameFilter, TrueFileFilter.INSTANCE);
+      if (weaverClassFiles.size() > 0)
+      {
+         useRetroDep = false;
+      }
+      
+      for (Object artifactObj : pluginArtifacts)
+      {
+         try
+         {
+            Artifact artifact = (Artifact) artifactObj;
+            if (artifact.getFile() != null)
+            {
+               if ( useRetroDep || ( ! artifact.getArtifactId().equals(JBOSS_RETRO_ARTIFACTID)))
+               {
+                  classpath.append(artifact.getFile().getCanonicalPath());
+                  classpath.append(pathSep);
+               }
+            }
+         }
+         catch (IOException ioe)
+         {
+            this.getLog().warn("Could not get filename");
+         }
+      }
+      return classpath.toString();
+   }
+      
+   /**
+    * This method creates the weaver instance.  Subclass mojos
+    * can use this class to override the default weaver configuration.
+    * @return The weaver instance
+    */
+   protected Weaver instantiateWeaver() throws MojoFailureException {
+      // We have to set the classpath first because the initialization
+      // may require access to the classpath.
+      Weaver weaver = null;
+
+      try {
+         weaver = (Weaver)Class.forName(weaverClass).newInstance();
+      } catch (Exception e) {
+         getLog().error("Unable to instantiate weaver class: " + this.weaverClass);
+         getLog().error(e.getMessage());
+         throw new MojoFailureException(e.getMessage());
+      }
+      
+      return weaver;
+   }
+   
+   protected String getOutputPath() 
+   {
+      return this.outputDirectory.getAbsolutePath();
+   }
+   
+   public List getClasspathElements() {
+      return this.classpathElements;
+   }
+   
+   public File getClassesDirecotry() {
+      return this.classesDirectory;
+   }
+   
+   protected String getJarClassifier() {
+      return this.classifier;
+   }
+   
+}

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java (from rev 14119, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java)
===================================================================
--- labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java	2007-08-09 19:43:49 UTC (rev 14132)
@@ -0,0 +1,74 @@
+package org.jboss.maven.plugins.retro;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Maven plugin for JBoss Retro Weaver.  This mojo is set up
+ * to weave the test classes and optionally generate a jar of
+ * the weaved classes. 
+ * 
+ * @phase process-test-classes
+ * @goal weave-tests
+ * 
+ */
+public class WeaveTestsMojo extends WeaveMojo
+{
+
+   /**
+    * Project classpath.
+    *
+    * @parameter expression="${project.testClasspathElements}"
+    * @required
+    * @readonly
+    */
+   protected List classpathElements;
+      
+   /**
+    * The directory containing the classes to be weaved.
+    *
+    * @parameter expression="${project.build.testOutputDirectory}"
+    * @required
+    * @readonly
+    */
+   protected File classesDirectory;
+
+   /**
+    * The jar file or directory where the weaved classes
+    * should be written. Defaults to "target/test-classes-weaved"
+    * 
+    * @parameter expression="${project.build.directory}/test-classes-weaved"
+    */
+   protected File outputDirectory;
+      
+   /**
+    * Suppress output information.
+    * @parameter
+    */
+   protected boolean suppress = true;
+   
+   public List getClasspathElements() 
+   {
+      return this.classpathElements;
+   }
+   
+   public File getClassesDirecotry() 
+   {
+      return this.classesDirectory;
+   }
+   
+   protected String getOutputPath() 
+   {
+      return this.outputDirectory.getAbsolutePath();
+   }
+   
+   protected String getJarClassifier() {
+      if (this.classifier == null) {
+         return "tests";
+      }
+      else {
+         return "tests-" + this.classifier;
+      }
+   }
+   
+}

Deleted: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java	2007-06-14 11:58:41 UTC (rev 12575)
+++ labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java	2007-08-09 19:43:49 UTC (rev 14132)
@@ -1,411 +0,0 @@
-package org.jboss.maven.plugins.retro;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.jar.Attributes;
-import java.util.jar.JarEntry;
-import java.util.jar.JarOutputStream;
-import java.util.jar.Manifest;
-import java.util.zip.Deflater;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-import org.jboss.weaver.WeaveRunner;
-import org.jboss.weaver.Weaver;
-
-/**
- * Maven plugin for JBoss Retro Weaver.  This can be used to 
- * do byte code weaving on classes in jars and directories.
- * By default the weaver will weave the main classes
- * and output the result to a jar with the specified classifier.
- * 
- * @phase process-classes
- * @goal weave
- * 
- */
-public class WeaverMojo extends AbstractMojo
-{
-   private final String fileSep = System.getProperty("file.separator");
-
-   private final String pathSep = System.getProperty("path.separator");
-
-   /**
-    * List of the jar file entries
-    */
-   private ArrayList<JarFileEntry> fileEntries = new ArrayList<JarFileEntry>();
-
-   /**
-    * The Maven Project Object
-    *
-    * @parameter expression="${project}"
-    * @required
-    * @readonly
-    */
-   protected MavenProject project;
-
-   /**
-    * The Maven Project Helper Object
-    *
-    * @component
-    * @required
-    */
-   protected org.apache.maven.project.MavenProjectHelper projectHelper;
-
-   /**
-    * The Maven Plugin Object
-    *
-    * @parameter expression="${plugin.components}"
-    * @required
-    * @readonly
-    */
-   protected List pluginComponents;
-
-   /**
-    * The plugin dependencies.
-    *
-    * @parameter expression="${plugin.artifacts}"
-    * @required
-    * @readonly
-    */
-   protected List pluginArtifacts;
-
-   /**
-    * Project classpath.
-    *
-    * @parameter expression="${project.compileClasspathElements}"
-    * @required
-    * @readonly
-    */
-   protected List classpathElements;
-   
-   /**
-    * Project classpath.
-    *
-    * @parameter expression="${project.testClasspathElements}"
-    * @required
-    * @readonly
-    */
-   protected List testClasspathElements;
-   
-   /**
-    * The directory for compiled classes.
-    *
-    * @parameter expression="${project.build.outputDirectory}"
-    * @required
-    * @readonly
-    */
-   //protected File targetClassesDirectory;
-
-   /**
-    * The directory for build output.
-    *
-    * @parameter expression="${project.build.directory}"
-    * @required
-    * @readonly
-    */
-   //protected File targetDirectory;
-
-   /**
-    * Include verbose output.
-    * @parameter
-    */
-   protected boolean verbose = false;
-
-   /**
-    * @parameter
-    */
-   protected String weaverClass = "org.jboss.weaver.Weaver";
-
-   /**
-    * The jar file or directory where the weaved classes
-    * should be written.
-    * @parameter
-    */
-   private String outputPath;
-
-
-   /**
-    * Determine whether to weave the project classes.
-    * Defaults to true.
-    * @parameter
-    */
-   private boolean weaveClasses = true;
-
-   /**
-    * If set to true, the test classes will be weaved.
-    * Note that when this is set to true, the plugin
-    * should be attached to the test-compile phase
-    * Defaults to false.
-    * @parameter
-    */
-   private boolean weaveTestClasses = false;
-
-   
-   /**
-    * Classifier to append to the weaved output file.
-    * Defaults to "weaved".
-    * @parameter
-    */
-   protected String weaveClassifier = "weaved";
-   
-   /**
-    * Suppress output information.
-    * @parameter
-    */
-   protected boolean suppress = true;
-
-   /**
-    * The weave runner that will be used to weave classes
-    */
-   //private WeaveRunner weaveRunner;
-   
-   public void execute() throws MojoFailureException
-   {
-      this.getLog().info("[retro] Compiling classes for jdk14");
-      
-      if (weaveClasses) {
-         weaveClasses();
-      }
-      if (weaveTestClasses) {
-         weaveTestClasses();
-      }
-   }
-   
-   protected void weaveClasses() throws MojoFailureException {
-      // Initialize the WeaveRunner with plugin params
-      Weaver weaver = createWeaver();
-      weaver.setClasspath(this.buildCompileClasspath());
-      weaver.init();
-      WeaveRunner weaveRunner = new WeaveRunner(weaver);
-
-      weaveRunner.setVerbose(verbose);
-      weaveRunner.setSuppress(suppress);
-      //weaveRunner.setOutputToJar(outputToJar);
-      String targetDirectory = project.getBuild().getDirectory();
-      String targetClassesDirectory = project.getBuild().getOutputDirectory();
-      
-      if (outputPath == null) {
-         outputPath = targetDirectory + fileSep + "classes-" + weaveClassifier + fileSep;
-      } else {
-         outputPath = targetDirectory + fileSep + outputPath;
-      }
-      weaveRunner.setOutputPath(outputPath); 
-      
-      try
-      {
-         weaveRunner.addSourcePath(targetClassesDirectory);
-         System.out.println("added source path: " + targetClassesDirectory);
-
-         weaveRunner.weave();
-      }
-      catch (Exception e)
-      {
-         this.getLog().error(e);
-         e.printStackTrace();
-      }
-   }
-   
-   protected void weaveTestClasses() throws MojoFailureException {
-      // Initialize the WeaveRunner with plugin params
-      String targetDirectory = project.getBuild().getDirectory();
-      String targetTestClassesDirectory = project.getBuild().getTestOutputDirectory();
-      
-      Weaver weaver = createWeaver();
-      weaver.setClasspath(this.buildTestCompileClasspath());
-      weaver.init();
-      WeaveRunner weaveRunner = new WeaveRunner(weaver);
-
-      weaveRunner.setVerbose(verbose);
-      weaveRunner.setSuppress(suppress);
-      
-      if (outputPath == null) {
-         outputPath = targetDirectory + fileSep + "test-classes-" + weaveClassifier + fileSep;
-      } else {
-         outputPath = targetDirectory + fileSep + outputPath;
-      }
-      weaveRunner.setOutputPath(outputPath); 
-      
-      try
-      {
-         weaveRunner.addSourcePath(targetTestClassesDirectory);
-         System.out.println("added source path: " + targetTestClassesDirectory);
-
-         weaveRunner.weave();
-      }
-      catch (Exception e)
-      {
-         this.getLog().error(e);
-         e.printStackTrace();
-      }
-      
-   }
-   
-   /**
-    * Generates a classpath string based on the compile class path
-    * and the plugin dependencies.
-    * @return
-    */
-   protected String buildCompileClasspath() {
-      // Create the classpath first, so that we can create the Weaver object.
-      StringBuilder classpath = new StringBuilder();
-      for (Object element : classpathElements)
-      {
-         classpath.append(element);
-         classpath.append(pathSep);
-      }
-      
-      for (Object artifact : pluginArtifacts)
-      {
-         try
-         {
-            File artifactFile = ((Artifact) artifact).getFile();
-            if (artifactFile != null)
-            {
-               classpath.append(artifactFile.getCanonicalPath());
-               classpath.append(pathSep);
-            }
-         }
-         catch (IOException ioe)
-         {
-            this.getLog().warn("Could not get filename");
-         }
-      }
-      return classpath.toString();
-   }
-   
-   /**
-    * Generates a classpath string based on the compile class path
-    * and the plugin dependencies.
-    * @return
-    */
-   protected String buildTestCompileClasspath() {
-      // Create the classpath first, so that we can create the Weaver object.
-      StringBuilder testClasspath = new StringBuilder();
-      
-      for (Object element : testClasspathElements)
-      {
-         testClasspath.append(element);
-         testClasspath.append(pathSep);
-      }
-      
-      for (Object artifact : pluginArtifacts)
-      {
-         try
-         {
-            File artifactFile = ((Artifact) artifact).getFile();
-            if (artifactFile != null)
-            {
-               testClasspath.append(artifactFile.getCanonicalPath());
-               testClasspath.append(pathSep);
-            }
-         }
-         catch (IOException ioe)
-         {
-            this.getLog().warn("Could not get filename");
-         }
-      }
-      testClasspath.append(project.getBuild().getTestOutputDirectory());
-      return testClasspath.toString();
-   }
-   
-   /**
-    * This method creates the weaver instance.  Subclass mojos
-    * can use this class to override the default weaver configuration.
-    * @return The weaver instance
-    */
-   protected Weaver createWeaver() throws MojoFailureException {
-      // We have to set the classpath first because the initialization
-      // may require access to the classpath.
-      Weaver weaver = null;
-
-      try {
-         weaver = (Weaver)Class.forName(weaverClass).newInstance();
-      } catch (Exception e) {
-         getLog().error("Unable to instantiate weaver class: " + this.weaverClass);
-         getLog().error(e.getMessage());
-         throw new MojoFailureException(e.getMessage());
-      }
-      
-      return weaver;
-   }
-
-   private void createJarEntries(File retroClassesDir)
-   {
-      try
-      {
-         this.getLog().info("DEBUG: " + retroClassesDir.getAbsolutePath());
-         Collection retroClasses = FileUtils.listFiles(retroClassesDir, null, true);
-         for (Object classFile : retroClasses)
-         {
-            String relativePath = classFile.toString().replace(retroClassesDir.getAbsolutePath() + "/", "");
-            byte[] content = FileUtils.readFileToByteArray((File) classFile);
-            fileEntries.add(new JarFileEntry(relativePath, content));
-         }
-      }
-      catch (IOException ioe)
-      {
-         this.getLog().error("error reading class file: " + ioe);
-      }
-   }
-
-   private void createRetroJarFile(File retroJarFile)
-   {
-      try
-      {
-         Manifest manifest = new Manifest();
-         Attributes attributes = manifest.getMainAttributes();
-         attributes.putValue("Manifest-Version", "1.0");
-         attributes.putValue("Created-By", System.getProperty("java.vm.version") + " ("
-               + System.getProperty("java.vm.vendor") + ")");
-         JarOutputStream stream = new JarOutputStream(new FileOutputStream(retroJarFile), manifest);
-         stream.setLevel(Deflater.BEST_COMPRESSION);
-         for (JarFileEntry fileEntry : fileEntries)
-         {
-            JarEntry jarEntry = new JarEntry(fileEntry.getName());
-            stream.putNextEntry(jarEntry);
-            stream.write(fileEntry.getContent());
-         }
-         stream.close();
-      }
-      catch (IOException ioe)
-      {
-         this.getLog().error("Unable to write retro jar: " + ioe);
-      }
-   }
-
-   private static class JarFileEntry
-   {
-
-      private byte[] content;
-
-      private String name;
-
-      public JarFileEntry(String name, byte[] content)
-      {
-         this.name = name;
-         this.content = content;
-      }
-
-      public byte[] getContent()
-      {
-         return content;
-      }
-
-      public String getName()
-      {
-         return name;
-      }
-
-      public void setName(String name)
-      {
-         this.name = name;
-      }
-   }
-}

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/main/java/org/jboss/maven/plugins/retro/util (from rev 13971, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/util)

Copied: labs/jbossbuild/maven-plugins/tags/maven-jboss-retro-plugin-1.0-beta-1/src/site (from rev 13914, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/site)




More information about the jboss-svn-commits mailing list