diff --git a/maven-plugins/maven-compiler-plugin/.cvsignore b/maven-plugins/maven-compiler-plugin/.cvsignore new file mode 100644 index 0000000000..7da1cadc3d --- /dev/null +++ b/maven-plugins/maven-compiler-plugin/.cvsignore @@ -0,0 +1,5 @@ +*~ +*.log +target +*.ipr +*.iws diff --git a/maven-plugins/maven-compiler-plugin/project.xml b/maven-plugins/maven-compiler-plugin/project.xml new file mode 100644 index 0000000000..93406c33a4 --- /dev/null +++ b/maven-plugins/maven-compiler-plugin/project.xml @@ -0,0 +1,72 @@ + + + + 3 + maven-compiler-plugin + maven-compiler-plugin + maven-compiler-plugin + Maven + 1.0-SNAPSHOT + + Apache Software Foundation + http://www.apache.org/ + /images/apache-maven-project.png + + 2001 + org.apache.maven + /images/maven.gif + + + scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven-components/maven-plugins/maven-compiler-plugin + scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:maven-components/maven-plugins/maven-compiler-plugin + http://cvs.apache.org/viewcvs.cgi/maven/ + + + + + xpp3 + xpp3 + 1.1.3.3 + + + plexus + plexus + 0.14-SNAPSHOT + + + plexus + plexus-i18n + 1.0-beta-2-SNAPSHOT + + + classworlds + classworlds + 1.1-SNAPSHOT + + + xstream + xstream + 1.0-SNAPSHOT + + + plexus + plexus-compiler + 1.0-SNAPSHOT + + + + + src/main/java + src/test/java + + + **/*Test.java + + + + + src/main/resources + + + + diff --git a/maven-plugins/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/CompilerPlugin.java b/maven-plugins/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/CompilerPlugin.java new file mode 100644 index 0000000000..75b8347613 --- /dev/null +++ b/maven-plugins/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/CompilerPlugin.java @@ -0,0 +1,88 @@ +package org.apache.maven.plugin; + +import org.codehaus.plexus.compiler.Compiler; +import org.codehaus.plexus.compiler.CompilerError; + +import java.util.List; +import java.util.Map; +import java.util.Iterator; +import java.io.File; + +/** + * @author Jason van Zyl + * + * @version $Id$ + */ + +// Conditions underwhich we fail +// - specified source directory does not exist +// - missing classpath Elements +// - compilation error + +// How to accurately report failures to users + +public class CompilerPlugin +{ + private Map compilers; + + private String sourceDirectory; + + private String outputDirectory; + + private String[] classpathElements; + + private String compiler; + + private boolean debug = true; + + public void execute() + throws Exception + { + if ( ! new File( sourceDirectory ).exists() ) + { + throw new Exception( "The specified source directory '"+ sourceDirectory + "' does not exist!" ); + } + + Compiler compiler = (Compiler) compilers.get( this.compiler ); + + List messages = compiler.compile( classpathElements, new String[]{sourceDirectory}, outputDirectory ); + + if ( debug ) + { + for ( int i = 0; i < classpathElements.length; i++ ) + { + String message; + + if ( new File( classpathElements[i] ).exists() ) + { + message = "present in repository."; + } + else + { + message = "Warning! not present in repository!"; + } + + System.out.println( "classpathElements[ "+ i +" ] = " + classpathElements[i] + ": " + message ); + } + } + + boolean compilationError = false; + + for ( Iterator i = messages.iterator(); i.hasNext(); ) + { + CompilerError message = (CompilerError) i.next(); + + if ( message.isError() ) + { + compilationError = true; + } + + System.out.println( message.getMessage() ); + } + + if ( compilationError ) + { + throw new Exception( "Compilation failure!" ); + } + } +} diff --git a/maven-plugins/maven-compiler-plugin/src/main/resources/META-INF/maven/plugin.xml b/maven-plugins/maven-compiler-plugin/src/main/resources/META-INF/maven/plugin.xml new file mode 100644 index 0000000000..4635e17b6c --- /dev/null +++ b/maven-plugins/maven-compiler-plugin/src/main/resources/META-INF/maven/plugin.xml @@ -0,0 +1,33 @@ + + compiler + org.apache.maven.plugin.CompilerPlugin + + + org.codehaus.plexus.compiler.Compiler + compilers + + + + + compile + + #project.build.sourceDirectory + #maven.build.dest + #project.classpathElements + javac + + + + test:compile + + compile + + + #project.build.unitTestSourceDirectory + #maven.test.dest + #project.classpathElements + javac + + + + diff --git a/maven-plugins/maven-jar-plugin/.cvsignore b/maven-plugins/maven-jar-plugin/.cvsignore new file mode 100644 index 0000000000..7da1cadc3d --- /dev/null +++ b/maven-plugins/maven-jar-plugin/.cvsignore @@ -0,0 +1,5 @@ +*~ +*.log +target +*.ipr +*.iws diff --git a/maven-plugins/maven-jar-plugin/project.xml b/maven-plugins/maven-jar-plugin/project.xml new file mode 100644 index 0000000000..3ee0c9a80e --- /dev/null +++ b/maven-plugins/maven-jar-plugin/project.xml @@ -0,0 +1,93 @@ + + + + 3 + maven-jar-plugin + maven + maven-jar-plugin + Maven + 1.0-SNAPSHOT + + Apache Software Foundation + http://www.apache.org/ + /images/apache-maven-project.png + + 2001 + org.apache.maven + /images/maven.gif + + + scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven-components/maven-plugins/maven-jar-plugin + scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:maven-components/maven-plugins/maven-jar-plugin + http://cvs.apache.org/viewcvs.cgi/maven/ + + + + + maven + maven-core + 2.0-SNAPSHOT + + + maven + maven-model + 2.0-SNAPSHOT + + + maven + maven-project + 2.0-SNAPSHOT + + + xpp3 + xpp3 + 1.1.3.3 + + + plexus + plexus + 0.14-SNAPSHOT + + + classworlds + classworlds + 1.1-SNAPSHOT + + + xstream + xstream + 1.0-SNAPSHOT + + + plexus + plexus-compiler + 1.0-SNAPSHOT + + + + + src/main/java + src/test/java + + + **/*Test.java + + + + + src/main/resources + + + + + + maven-faq-plugin will run by itself but won't register + maven-file-activity-plugin can't parse jelly script + maven-developer-activity-plugin + maven-tasklist-plugin not quite right the report comes out empty @tag problem? + maven-jdepend-plugin works itself but not with site, also it uses maven-classpath which is really just maven_home/lib + maven-jellydoc-plugin ${genDocs} not available in jelly.plugin + maven-pmd-plugin classpath is borked because of getDependencyPath("foo:foo") + + + diff --git a/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/JarPlugin.java b/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/JarPlugin.java new file mode 100644 index 0000000000..f2b949a93b --- /dev/null +++ b/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/JarPlugin.java @@ -0,0 +1,163 @@ +package org.apache.maven.plugin; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache Maven" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache Maven", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + * ==================================================================== + */ + +import org.codehaus.plexus.util.FileUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; +import java.util.jar.Manifest; + +/** + * + * @author Michal Maczka + * @version $Id$ + * + * maven.jar.manifest.extensions.add + * maven.jar.includes + * maven.jar.excludes + * maven.jar.index + * maven.jar.compress + * maven.remote.group + */ +public class JarPlugin +{ + private String jarName; + + private String outputDirectory; + + private String basedir; + + public void execute() + throws Exception + { + File basedir = new File( this.basedir ); + + File jarFile = new File( new File( outputDirectory ), jarName + ".jar" ); + + List files = FileUtils.getFileNames( basedir, "**/**", "**/package.html", false ); + + createJar( files, jarFile, basedir ); + } + + public void createJar( List files, File jarName, File basedir ) + throws Exception + { + JarOutputStream jar = new JarOutputStream( new FileOutputStream( jarName ), createManifest() ); + + try + { + for ( int i = 0; i < files.size(); i++ ) + { + String file = (String) files.get( i ); + + writeJarEntry( jar, new File( basedir, file ), file ); + } + } + finally + { + jar.close(); + } + } + + private void writeJarEntry( JarOutputStream jar, File source, String entryName ) + throws Exception + { + byte[] buffer = new byte[1024]; + + int bytesRead; + + try + { + FileInputStream is = new FileInputStream( source ); + + try + { + JarEntry entry = new JarEntry( entryName ); + + jar.putNextEntry( entry ); + + while ( ( bytesRead = is.read( buffer ) ) != -1 ) + { + jar.write( buffer, 0, bytesRead ); + } + } + catch ( Exception ex ) + { + } + finally + { + is.close(); + } + } + catch ( IOException ex ) + { + } + } + + private Manifest createManifest() + { + Manifest manifest = new Manifest(); + + return manifest; + } +} diff --git a/maven-plugins/maven-jar-plugin/src/main/resources/META-INF/maven/plugin.xml b/maven-plugins/maven-jar-plugin/src/main/resources/META-INF/maven/plugin.xml new file mode 100644 index 0000000000..66d4249807 --- /dev/null +++ b/maven-plugins/maven-jar-plugin/src/main/resources/META-INF/maven/plugin.xml @@ -0,0 +1,18 @@ + + jar + org.apache.maven.plugin.JarPlugin + + + jar + + test + resources + + + #maven.final.name + #maven.build.dir + #maven.build.dest + + + + diff --git a/maven-plugins/maven-resources-plugin/.cvsignore b/maven-plugins/maven-resources-plugin/.cvsignore new file mode 100644 index 0000000000..7da1cadc3d --- /dev/null +++ b/maven-plugins/maven-resources-plugin/.cvsignore @@ -0,0 +1,5 @@ +*~ +*.log +target +*.ipr +*.iws diff --git a/maven-plugins/maven-resources-plugin/project.xml b/maven-plugins/maven-resources-plugin/project.xml new file mode 100644 index 0000000000..f512f21770 --- /dev/null +++ b/maven-plugins/maven-resources-plugin/project.xml @@ -0,0 +1,131 @@ + + + + 3 + maven-resources-plugin + maven + maven-resources-plugin + Maven + 1.0-SNAPSHOT + + Apache Software Foundation + http://www.apache.org/ + /images/apache-maven-project.png + + 2001 + org.apache.maven + /images/maven.gif + + + + + + + + + + scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven-components/maven-plugins/maven-resources-plugin + scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:maven-components/maven-plugins/maven-resources-plugin + http://cvs.apache.org/viewcvs.cgi/maven/ + + + + + + + + maven + maven-core + 2.0-SNAPSHOT + + + + maven + maven-model + 2.0-SNAPSHOT + + + + maven + maven-model-xpp3 + 2.0-SNAPSHOT + + + + maven + maven-project + 2.0-SNAPSHOT + + + + commons-cli + commons-cli + 1.0-beta-2 + + + + + + xpp3 + xpp3 + 1.1.3.3 + + + + plexus + plexus + 0.14-SNAPSHOT + + + + plexus + plexus-i18n + 1.0-beta-2-SNAPSHOT + + + + classworlds + classworlds + 1.1-SNAPSHOT + + + + xstream + xstream + 1.0-SNAPSHOT + + + + plexus + plexus-compiler + 1.0-SNAPSHOT + + + + + + src/main/java + src/test/java + + + **/*Test.java + + + + + src/main/resources + + + + + + maven-faq-plugin will run by itself but won't register + maven-file-activity-plugin can't parse jelly script + maven-developer-activity-plugin + maven-tasklist-plugin not quite right the report comes out empty @tag problem? + maven-jdepend-plugin works itself but not with site, also it uses maven-classpath which is really just maven_home/lib + maven-jellydoc-plugin ${genDocs} not available in jelly.plugin + maven-pmd-plugin classpath is borked because of getDependencyPath("foo:foo") + + + diff --git a/maven-plugins/maven-resources-plugin/src/main/java/org/apache/maven/plugin/ResourcesPlugin.java b/maven-plugins/maven-resources-plugin/src/main/java/org/apache/maven/plugin/ResourcesPlugin.java new file mode 100644 index 0000000000..89d08956d8 --- /dev/null +++ b/maven-plugins/maven-resources-plugin/src/main/java/org/apache/maven/plugin/ResourcesPlugin.java @@ -0,0 +1,226 @@ +package org.apache.maven.plugin; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache Maven" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache Maven", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + * ==================================================================== + */ + +import org.apache.maven.model.Resource; +import org.codehaus.plexus.util.FileUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * + * @author Michal Maczka + * @version $Id$ + * + * maven.jar.manifest.extensions.add + * maven.jar.includes + * maven.jar.excludes + * maven.jar.index + * maven.jar.compress + * maven.remote.group + * + * @todo separate this into a resources plugin and jar plugin so that the resource + * copying can be used as part of testing, right now the resources are being copied + * directly into the JAR, need to make them available to testing. + */ +public class ResourcesPlugin +{ + private String outputDirectory; + + private List resources; + + public void execute() + throws Exception + { + for ( Iterator i = getJarResources( resources ).iterator(); i.hasNext(); ) + { + ResourceEntry resourceEntry = (ResourceEntry) i.next(); + + File destinationFile = new File( outputDirectory, resourceEntry.getDestination() ); + + if ( !destinationFile.getParentFile().exists() ) + { + destinationFile.getParentFile().mkdirs(); + } + + fileCopy( resourceEntry.getSource(), destinationFile.getPath() ); + } + } + + private List getJarResources( List resources ) + throws Exception + { + List resourceEntries = new ArrayList(); + + for ( Iterator i = resources.iterator(); i.hasNext(); ) + { + Resource resource = (Resource) i.next(); + + String targetPath = resource.getTargetPath(); + + File resourceDirectory = new File( resource.getDirectory() ); + + if ( !resourceDirectory.exists() ) + { + continue; + } + + List files = FileUtils.getFileNames( resourceDirectory, + listToString( resource.getIncludes() ), + listToString( resource.getExcludes() ), + false ); + + for ( Iterator j = files.iterator(); j.hasNext(); ) + { + String name = (String) j.next(); + + String entryName = name; + ; + + if ( targetPath != null ) + { + entryName = targetPath + "/" + name; + } + + ResourceEntry je = new ResourceEntry( new File( resource.getDirectory(), name ).getPath(), entryName ); + + resourceEntries.add( je ); + } + } + + return resourceEntries; + } + + private String listToString( List list ) + { + StringBuffer sb = new StringBuffer(); + + for ( int i = 0; i < list.size(); i++ ) + { + sb.append( list.get( i ) ); + + if ( i != list.size() - 1 ) + { + sb.append( "," ); + } + } + + return sb.toString(); + } + + public static String fileRead( String fileName ) throws IOException + { + StringBuffer buf = new StringBuffer(); + + FileInputStream in = new FileInputStream( fileName ); + + int count; + byte[] b = new byte[512]; + while ( ( count = in.read( b ) ) > 0 ) // blocking read + { + buf.append( new String( b, 0, count ) ); + } + + in.close(); + + return buf.toString(); + } + + public static void fileWrite( String fileName, String data ) throws Exception + { + FileOutputStream out = new FileOutputStream( fileName ); + out.write( data.getBytes() ); + out.close(); + } + + public static void fileCopy( String inFileName, String outFileName ) throws + Exception + { + String content = fileRead( inFileName ); + fileWrite( outFileName, content ); + } + + class ResourceEntry + { + private String source; + + private String destination; + + public ResourceEntry( String source, String entry ) + { + this.source = source; + + this.destination = entry; + } + + public String getSource() + { + return source; + } + + public String getDestination() + { + return destination; + } + } +} diff --git a/maven-plugins/maven-resources-plugin/src/main/resources/META-INF/maven/plugin.xml b/maven-plugins/maven-resources-plugin/src/main/resources/META-INF/maven/plugin.xml new file mode 100644 index 0000000000..ea502b1cc0 --- /dev/null +++ b/maven-plugins/maven-resources-plugin/src/main/resources/META-INF/maven/plugin.xml @@ -0,0 +1,20 @@ + + resource-copier + org.apache.maven.plugin.ResourcesPlugin + + + resources + + #maven.build.dest + #project.build.resources + + + + test:resources + + #maven.test.dest + #project.build.unitTest.resources + + + + diff --git a/maven-plugins/maven-surefire-plugin/.cvsignore b/maven-plugins/maven-surefire-plugin/.cvsignore new file mode 100644 index 0000000000..8eeb0ff8ae --- /dev/null +++ b/maven-plugins/maven-surefire-plugin/.cvsignore @@ -0,0 +1,7 @@ +target +velocity.log +maven.log +.classpath +.project +*.ipr +*.iws diff --git a/maven-plugins/maven-surefire-plugin/project.xml b/maven-plugins/maven-surefire-plugin/project.xml new file mode 100644 index 0000000000..413bd5ad9b --- /dev/null +++ b/maven-plugins/maven-surefire-plugin/project.xml @@ -0,0 +1,99 @@ + + + + 3 + maven-surefire-plugin + maven + maven-surefire-plugin + Maven + 1.0-SNAPSHOT + + Apache Software Foundation + http://www.apache.org/ + /images/apache-maven-project.png + + 2001 + org.apache.maven + /images/maven.gif + + + + + + + + + + scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven-components/maven-plugins/maven-surefire-plugin + scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:maven-components/maven-plugins/maven-surefire-plugin + http://cvs.apache.org/viewcvs.cgi/maven/ + + + + + + + + surefire + surefire-booter + 1.0 + + + + + + xpp3 + xpp3 + 1.1.3.3 + + + + plexus + plexus + 0.14-SNAPSHOT + + + + plexus + plexus-i18n + 1.0-beta-2-SNAPSHOT + + + + classworlds + classworlds + 1.1-SNAPSHOT + + + + xstream + xstream + 1.0-SNAPSHOT + + + + + + dev@maven.apache.org + src/main/java + src/test/java + + + **/*Test.java + + + + + src/main/resources + + + + + + maven-jxr-plugin + maven-javadoc-plugin + maven-changes-plugin + maven-changelog-plugin + + + diff --git a/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java b/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java new file mode 100644 index 0000000000..06eaacb373 --- /dev/null +++ b/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java @@ -0,0 +1,53 @@ +package org.apache.maven.test; + +import org.codehaus.surefire.SurefireBooter; + +import java.io.File; +import java.util.List; + +/** + * + * + * @author Jason van Zyl + * + * @version $Id$ + */ +public class SurefirePlugin +{ + private String mavenRepoLocal; + + private String basedir; + + private List includes; + + private List excludes; + + private String[] classpathElements; + + public void execute() + throws Exception + { + System.setProperty( "basedir", basedir ); + + SurefireBooter surefireBooter = new SurefireBooter(); + + surefireBooter.addBattery( "org.codehaus.surefire.battery.DirectoryBattery", new Object[]{basedir, includes, excludes} ); + + surefireBooter.addClassPathUrl( new File( mavenRepoLocal, "junit/jars/junit-3.8.1.jar" ).getPath() ); + + surefireBooter.addClassPathUrl( new File( mavenRepoLocal, "surefire/jars/surefire-1.0.jar" ).getPath() ); + + surefireBooter.addClassPathUrl( new File( basedir, "target/classes" ).getPath() ); + + surefireBooter.addClassPathUrl( new File( basedir, "target/test-classes" ).getPath() ); + + for ( int i = 0; i < classpathElements.length; i++ ) + { + surefireBooter.addClassPathUrl( classpathElements[i] ); + } + + surefireBooter.addReport( "org.codehaus.surefire.report.ConsoleReport" ); + + surefireBooter.run(); + } +} diff --git a/maven-plugins/maven-surefire-plugin/src/main/resources/META-INF/maven/plugin.xml b/maven-plugins/maven-surefire-plugin/src/main/resources/META-INF/maven/plugin.xml new file mode 100644 index 0000000000..c58488404b --- /dev/null +++ b/maven-plugins/maven-surefire-plugin/src/main/resources/META-INF/maven/plugin.xml @@ -0,0 +1,76 @@ + + + surefire + org.apache.maven.test.SurefirePlugin + + + test + + test:compile + test:resources + + + #maven.repo.local + #basedir + #project.build.unitTest.includes + #project.build.unitTest.excludes + #project.classpathElements + + + + \ No newline at end of file