[jboss-cvs] JBossAS SVN: r63542 - in projects/aop/trunk: maven-jbossaop-plugin and 7 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jun 15 11:13:52 EDT 2007
Author: stalep
Date: 2007-06-15 11:13:52 -0400 (Fri, 15 Jun 2007)
New Revision: 63542
Added:
projects/aop/trunk/maven-jbossaop-plugin/
projects/aop/trunk/maven-jbossaop-plugin/pom.xml
projects/aop/trunk/maven-jbossaop-plugin/src/
projects/aop/trunk/maven-jbossaop-plugin/src/main/
projects/aop/trunk/maven-jbossaop-plugin/src/main/java/
projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/
projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/jboss/
projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/jboss/aop/
projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/jboss/aop/maven/
projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/jboss/aop/maven/JBossAOPCMojo.java
Log:
Initial upload of a simple aopcompiler for maven2
When its more complete it will probably be moved to the jboss-plugins repository
Added: projects/aop/trunk/maven-jbossaop-plugin/pom.xml
===================================================================
--- projects/aop/trunk/maven-jbossaop-plugin/pom.xml (rev 0)
+++ projects/aop/trunk/maven-jbossaop-plugin/pom.xml 2007-06-15 15:13:52 UTC (rev 63542)
@@ -0,0 +1,118 @@
+<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>jboss</groupId>
+ <artifactId>maven-jbossaop-plugin</artifactId>
+ <packaging>maven-plugin</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>JBoss AOP Maven Plugin</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.0</version>
+ </dependency>
+
+<!--
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <version>2.0</version>
+ </dependency>
+ -->
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.2</version>
+ </dependency>
+
+<!--
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-compiler-api</artifactId>
+ <version>1.5.3</version>
+ </dependency>
+ -->
+
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>1.4.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>jboss.jboss-aop</groupId>
+ <artifactId>jboss-aop</artifactId>
+ <version>1.5.0.GA</version>
+ </dependency>
+
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>javassist</artifactId>
+ <version>3.4.ga</version>
+ </dependency>
+
+ <dependency>
+ <groupId>trove</groupId>
+ <artifactId>trove</artifactId>
+ <version>1.1-beta-5</version>
+ </dependency>
+
+<!--
+ <dependency>
+ <groupId>concurrent</groupId>
+ <artifactId>concurrent</artifactId>
+ <version>1.3.4</version>
+ </dependency>
+ -->
+
+ </dependencies>
+ <repositories>
+ <repository>
+ <id>jboss_repo</id>
+ <name>JBoss Maven Repository</name>
+ <url>http://repository.jboss.com/maven2</url>
+ </repository>
+ </repositories>
+
+ <build>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
+ <testSourceDirectory>src/test/java</testSourceDirectory>
+ <outputDirectory>target/classes</outputDirectory>
+ <testOutputDirectory>target/test-classes</testOutputDirectory>
+ <defaultGoal>install</defaultGoal>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ </testResources>
+ <directory>target</directory>
+
+
+ <plugins>
+
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>${jdkVersion}</source>
+ <target>${jdkVersion}</target>
+ </configuration>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+ <properties>
+ <jdkVersion>1.5</jdkVersion>
+ </properties>
+
+</project>
Added: projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/jboss/aop/maven/JBossAOPCMojo.java
===================================================================
--- projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/jboss/aop/maven/JBossAOPCMojo.java (rev 0)
+++ projects/aop/trunk/maven-jbossaop-plugin/src/main/java/org/jboss/aop/maven/JBossAOPCMojo.java 2007-06-15 15:13:52 UTC (rev 63542)
@@ -0,0 +1,281 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.aop.maven;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Dependency;
+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;
+
+/**
+ * A Simple mojo that use the JBoss AOP compiler to weave in AOP code
+ * based on a jboss-aop.xml file.
+ * NOTE: This mojo is not finished and will probably be rewritten or completly removed
+ * when i learn more about maven...
+ *
+ * Use it by running: mvn jbossaop:aopc
+ *
+ * Supported options:
+ * - aoppath (default src/main/resources/jboss-aop.xml)
+ * - verbose (default true)
+ * - suppress (default false)
+ * - noopt (default false)
+ * - report (default false)
+ *
+ *
+ * @author <a href="mailto:stalep at conduct.no">Stale W. Pedersen</a>
+ * @goal aopc
+ * @phase compile
+ * @requiresDependencyResolution
+ */
+public class JBossAOPCMojo extends AbstractMojo
+{
+
+ /**
+ * Set the verbose level of the compiler
+ *
+ * @parameter expression="${verbose}" default-value="true"
+ */
+ private boolean verbose;
+
+ /**
+ *
+ *
+ * @parameter expression="${supress}" default-value="false"
+ */
+ private boolean suppress;
+
+ /**
+ *
+ *
+ * @parameter expression="${noopt}" default-value="false"
+ */
+ private boolean noopt;
+
+ /**
+ *
+ *
+ * @parameter expression="${report}" default-value="false"
+ */
+ private boolean report;
+
+ /**
+ *
+ *
+ * @parameter expression="${failOnError}" default-value="true"
+ */
+ private boolean failOnError;
+
+ /**
+ *
+ * @parameter expression="${classPath}" default-value="${project.build.outputDirectory}"
+ */
+ private String classPath;
+
+ /**
+ *
+ * @parameter expression="${aopPath}" default-value="src/main/resources/jboss-aop.xml"
+ */
+ private String aoppath;
+
+ /**
+ *
+ * @parameter expression="${aopClassPath}" default-value=""
+ */
+ private String aopClassPath;
+
+ /**
+ *
+ * @parameter expression="${aopClassPath}" default-value=""
+ */
+ private String compilerClasspath;
+
+ /**
+ *
+ * @parameter expression="${aopClassPath}" default-value="${project.build.outputDirectory}"
+ */
+ private String compileSourcepath;
+
+
+ /**
+ * @parameter default-value="${project.artifacts}"
+ * @required
+ * @readonly
+ */
+ private Set dependencies;
+
+ /**
+ * @parameter default-value="${project.compileDependencies}"
+ * @required
+ * @readonly
+ */
+ private List<Dependency> cDependencies;
+
+ /**
+ * @parameter default-value="${project.dependency}"
+ * @required
+ * @readonly
+ */
+ private Dependency pDependency;
+
+ /**
+ * @parameter expression="${project}"
+ */
+ private MavenProject project;
+
+ public void execute() throws MojoExecutionException
+ {
+ compileOutOfProcess(createCommandLine());
+ }
+
+ private String createClassPathList(Set<Artifact> artifacts)
+ {
+ StringBuffer sb = new StringBuffer();
+ for(Artifact a : artifacts)
+ {
+ sb.append(a.getFile().toString()).append(File.pathSeparator);
+ }
+ sb.append(getCompileSourcepath());
+ return sb.toString();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ private Commandline createCommandLine()
+ {
+ Commandline cl = new Commandline();
+ cl.setExecutable("java");
+ cl.addArguments(new String[] { "-cp", createClassPathList(project.getArtifacts())});
+ cl.addArguments(new String[] { "org.jboss.aop.standalone.Compiler"});
+ cl.addArguments(new String[] { "-classpath", createClassPathList(project.getArtifacts())});
+ if(isVerbose())
+ cl.addArguments(new String[] { "-verbose"});
+ if(isSuppress())
+ cl.addArguments(new String[] { "-suppress"});
+ if(isNoopt())
+ cl.addArguments(new String[] { "-noopt"});
+ if(hasReport())
+ cl.addArguments(new String[] { "-report"});
+
+ cl.addArguments(new String[] { "-aoppath", getAoppath()});
+
+ cl.addArguments(new String[] { "target/classes"});
+
+ return cl;
+ }
+
+ private void compileOutOfProcess(Commandline cl)
+ {
+
+ CommandLineUtils.StringStreamConsumer out = new CommandLineUtils.StringStreamConsumer();
+ CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
+ try
+ {
+ CommandLineUtils.executeCommandLine( cl, out, err );
+
+
+ processStream(new BufferedReader( new StringReader( err.getOutput()) ), true);
+ processStream(new BufferedReader( new StringReader( out.getOutput()) ), false);
+ }
+ catch (CommandLineException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ private String getAoppath()
+ {
+ return aoppath;
+ }
+
+ private void processStream(BufferedReader input, boolean isError)
+ {
+ String err = null;
+ try
+ {
+ while( (err = input.readLine()) != null)
+ {
+ if(isError)
+ getLog().error(err);
+ else
+ getLog().info(err);
+ }
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private String getClassPath()
+ {
+ return classPath;
+ }
+
+ private String getCompilerClasspath()
+ {
+ return compilerClasspath;
+ }
+
+ private String getCompileSourcepath()
+ {
+ return compileSourcepath;
+ }
+
+ private Set getDependencies()
+ {
+ return dependencies;
+ }
+
+ private boolean isVerbose()
+ {
+ return verbose;
+ }
+
+ private boolean isSuppress()
+ {
+ return suppress;
+ }
+
+ private boolean isNoopt()
+ {
+ return noopt;
+ }
+
+ private boolean hasReport()
+ {
+ return report;
+ }
+
+}
More information about the jboss-cvs-commits
mailing list