[jboss-svn-commits] JBL Code SVN: r13795 - in labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin: src/main/java/org/jboss/maven/plugins/retro and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 26 14:40:29 EDT 2007
Author: pgier
Date: 2007-07-26 14:40:29 -0400 (Thu, 26 Jul 2007)
New Revision: 13795
Added:
labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java
labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java
Removed:
labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java
Modified:
labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml
labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java
Log:
Splitting the main class weaving from the test class weaving.
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml 2007-07-26 16:41:38 UTC (rev 13794)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml 2007-07-26 18:40:29 UTC (rev 13795)
@@ -4,7 +4,7 @@
<artifactId>maven-jboss-retro-plugin</artifactId>
<packaging>maven-plugin</packaging>
<name>JBoss Retro Maven Plugin</name>
- <version>0.9-SNAPSHOT</version>
+ <version>0.9-beta-2-SNAPSHOT</version>
<url>http://www.jboss.org</url>
<description>Maven plugin for jboss retro</description>
<scm>
@@ -46,32 +46,27 @@
</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.1-SNAPSHOT</version>
+ <version>[1.1, 1.2)</version>
</dependency>
<dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant</artifactId>
- <version>1.7.0</version>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
- <artifactId>maven-plugin-api</artifactId>
+ <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>
Modified: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/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-07-26 16:41:38 UTC (rev 13794)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java 2007-07-26 18:40:29 UTC (rev 13795)
@@ -11,13 +11,11 @@
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.
+ * Maven plugin for running the retro check test.
* NOTE: The retro check functionality is not complete. Please
* do not use this part of the plugin in a production environment.
*
- * @phase process-classes
+ * @phase test
* @goal retro-check
*
*/
Copied: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java (from rev 12575, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/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/WeaveMojo.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java 2007-07-26 18:40:29 UTC (rev 13795)
@@ -0,0 +1,333 @@
+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 WeaveMojo extends AbstractMojo
+{
+ protected final String fileSep = System.getProperty("file.separator");
+
+ protected 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
+ * @readonly
+ */
+ protected org.apache.maven.project.MavenProjectHelper projectHelper;
+
+ /**
+ * The Maven Plugin Components
+ * TODO: I don't think this param is needed.
+ *
+ * @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;
+
+ /**
+ * The directory for compiled classes.
+ *
+ * @parameter expression="${project.build.outputDirectory}"
+ * @required
+ * @readonly
+ */
+ 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 jar file or directory where the weaved classes
+ * should be written. The path is relative to the project
+ * output directory (target).
+ * Defaults to "target/classes-weaved"
+ * @parameter
+ */
+ protected String weaverOutputPath;
+
+ /**
+ * Create weaved jar.
+ * @parameter
+ */
+ protected boolean createJar = true;
+
+ /**
+ * Classifier to append to the weaved output file.
+ * Defaults to "weaved".
+ * @parameter
+ */
+ protected String weaveClassifier = "weaved";
+
+ /**
+ * Suppress output information.
+ * @parameter
+ */
+ protected boolean suppress = true;
+
+ /**
+ * Main plugin execution method
+ */
+ public void execute() throws MojoFailureException
+ {
+ this.getLog().info("[weaver] Weaving classes");
+
+ weaveClasses();
+ }
+
+ protected void weaveClasses() throws MojoFailureException {
+ // Initialize the WeaveRunner using plugin params
+ Weaver weaver = createWeaver();
+ weaver.setClasspath(this.buildClasspath());
+ weaver.init();
+ WeaveRunner weaveRunner = new WeaveRunner(weaver);
+
+ weaveRunner.setVerbose(verbose);
+ weaveRunner.setSuppress(suppress);
+
+ weaveRunner.setOutputPath(getOutputPath());
+
+ try
+ {
+ weaveRunner.addSourcePath(this.getClassesDirecotry().getAbsolutePath());
+ getLog().info("Weaving classes in path: " + 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);
+ }
+
+ 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();
+ }
+
+ /**
+ * 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);
+ }
+ }
+
+ protected 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;
+ }
+ }
+
+ protected String getOutputPath()
+ {
+ if (this.weaverOutputPath == null) {
+ String classesDirString = getClassesDirecotry().getAbsolutePath();
+ if(classesDirString.endsWith(this.fileSep)) {
+ classesDirString = classesDirString.substring(0, (classesDirString.length() - 2));
+ }
+ return (classesDirectory + "-" + this.weaveClassifier);
+ }
+ else
+ {
+ String buildDirectory = project.getBuild().getDirectory();
+ if (!buildDirectory.endsWith(fileSep)) {
+ buildDirectory += fileSep;
+ }
+ return buildDirectory + this.fileSep + this.weaverOutputPath;
+ }
+ }
+
+ public List getClasspathElements() {
+ return this.classpathElements;
+ }
+
+ public File getClassesDirecotry() {
+ return this.classesDirectory;
+ }
+
+}
Added: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java 2007-07-26 18:40:29 UTC (rev 13795)
@@ -0,0 +1,89 @@
+package org.jboss.maven.plugins.retro;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.maven.plugin.MojoFailureException;
+
+/**
+ * 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
+ */
+ protected String outputPath;
+
+ /**
+ * Suppress output information.
+ * @parameter
+ */
+ protected boolean suppress = true;
+
+ public void execute() throws MojoFailureException
+ {
+ this.getLog().info("[weaver] Weaving test classes");
+ //System.out.println(this.classpathElements);
+ //super.classpathElements = classpathElements;
+ weaveClasses();
+ }
+
+ public List getClasspathElements()
+ {
+ return this.classpathElements;
+ }
+
+ public File getClassesDirecotry()
+ {
+ return this.classesDirectory;
+ }
+
+ protected String getOutputPath()
+ {
+ if (this.weaverOutputPath == null) {
+ String classesDirString = getClassesDirecotry().getAbsolutePath();
+ if(classesDirString.endsWith(this.fileSep)) {
+ classesDirString = classesDirString.substring(0, (classesDirString.length() - 2));
+ }
+ return (classesDirectory + "-" + this.weaveClassifier);
+ }
+ else
+ {
+ String buildDirectory = project.getBuild().getDirectory();
+ if (!buildDirectory.endsWith(fileSep)) {
+ buildDirectory += fileSep;
+ }
+ return buildDirectory + this.fileSep + this.weaverOutputPath;
+ }
+ }
+
+}
Deleted: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/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-07-26 16:41:38 UTC (rev 13794)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java 2007-07-26 18:40:29 UTC (rev 13795)
@@ -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;
- }
- }
-}
More information about the jboss-svn-commits
mailing list