brett 2005/03/17 15:59:07
Modified:
maven-plugins/maven-assemble-plugin/src/main/java/org/apache/maven/plugin/assemble
AssembleMojo.java
maven-plugins/maven-assemble-plugin pom.xml
maven-mboot2/src/main/java MBoot.java
Log:
flesh out assemble mojo
Revision Changes Path
1.2 +44 -24
maven-components/maven-plugins/maven-assemble-plugin/src/main/java/org/apache/maven/plugin/assemble/AssembleMojo.java
Index: AssembleMojo.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-assemble-plugin/src/main/java/org/apache/maven/plugin/assemble/AssembleMojo.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AssembleMojo.java 13 Mar 2005 01:37:59 -0000 1.1
+++ AssembleMojo.java 17 Mar 2005 23:59:06 -0000 1.2
@@ -22,25 +22,18 @@
import org.apache.maven.plugins.assemble.model.Assembly;
import org.apache.maven.plugins.assemble.model.FileSet;
import org.apache.maven.plugins.assemble.model.io.xpp3.AssemblyXpp3Reader;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.archiver.Archiver;
+import org.codehaus.plexus.archiver.tar.TarArchiver;
import java.io.File;
import java.io.FileReader;
import java.util.Iterator;
-import java.util.List;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
* @version $Id$
* @goal assemble
* @description assemble an application bundle or distribution
- * @parameter name="buildDirectory"
- * type="String"
- * required="true"
- * validator=""
- * expression="#project.build.directory/assembly"
- * description=""
* @parameter name="outputDirectory" type="String" required="true"
validator="" expression="#project.build.directory" description=""
* @parameter name="descriptor" type="String" required="true" validator=""
expression="#maven.assemble.descriptor" description=""
* @parameter name="finalName" type="String" required="true" validator=""
expression="#project.build.finalName" description=""
@@ -48,41 +41,68 @@
public class AssembleMojo
extends AbstractPlugin
{
+ private static final String[] EMPTY_STRING_ARRAY = {};
+
public void execute( PluginExecutionRequest request,
PluginExecutionResponse response )
throws Exception
{
// TODO: align all to basedir
String outputDirectory = (String) request.getParameter(
"outputDirectory" );
- String buildDirectory = (String) request.getParameter(
"buildDirectory" );
String descriptor = (String) request.getParameter( "descriptor" );
String finalName = (String) request.getParameter( "finalName" );
AssemblyXpp3Reader reader = new AssemblyXpp3Reader();
Assembly assembly = reader.read( new FileReader( new File(
descriptor ) ) );
- // TODO: include in bootstrap
// TODO: include dependencies marked for distribution under certain
formats
// TODO: have a default set of descriptors that can be used instead
of the file
String fullName = finalName + "-" + assembly.getId();
- File outputBase = new File( buildDirectory, fullName );
- outputBase.mkdirs();
- for ( Iterator i = assembly.getFilesets().iterator(); i.hasNext(); )
+ for ( Iterator i = assembly.getFormats().iterator(); i.hasNext(); )
{
- FileSet fileset = (FileSet) i.next();
- String directory = fileset.getDirectory();
- String output = fileset.getOutputDirectory();
- if ( output == null )
+ String format = (String) i.next();
+
+ String filename = fullName + "." + format;
+
+ // TODO: use component roles? Can we do that in a mojo?
+ Archiver archiver;
+ if ( format.startsWith( "tar" ) )
+ {
+ TarArchiver tarArchiver = new TarArchiver();
+ archiver = tarArchiver;
+ int index = format.indexOf( '.' );
+ if ( index >= 0 )
+ {
+ // TODO: this needs a cleanup in plexus archiver - use a
real typesafe enum
+ TarArchiver.TarCompressionMethod tarCompressionMethod =
new TarArchiver.TarCompressionMethod();
+ tarCompressionMethod.setValue( format.substring( index +
1 ) );
+ tarArchiver.setCompression( tarCompressionMethod );
+ }
+ }
+ else
{
- output = directory;
+ // TODO: better handling
+ throw new IllegalArgumentException( "Unknown format: " +
format );
}
- // TODO: includes/excludes
+ for ( Iterator j = assembly.getFilesets().iterator();
j.hasNext(); )
+ {
+ FileSet fileset = (FileSet) j.next();
+ String directory = fileset.getDirectory();
+ String output = fileset.getOutputDirectory();
+ if ( output == null )
+ {
+ output = directory;
+ }
+
+ String[] includes = (String[])
fileset.getIncludes().toArray( EMPTY_STRING_ARRAY );
+ String[] excludes = (String[])
fileset.getExcludes().toArray( EMPTY_STRING_ARRAY );
+ archiver.addDirectory( new File( directory ), output,
includes, excludes );
+ }
- FileUtils.copyDirectoryStructure( new File( directory ), new
File( outputBase, output ));
+ archiver.setDestFile( new File( outputDirectory, filename ) );
+ archiver.createArchive();
}
-
- // TODO: package it up
}
}
1.4 +7 -6
maven-components/maven-plugins/maven-assemble-plugin/pom.xml
Index: pom.xml
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-assemble-plugin/pom.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- pom.xml 15 Mar 2005 22:31:54 -0000 1.3
+++ pom.xml 17 Mar 2005 23:59:06 -0000 1.4
@@ -1,4 +1,4 @@
-<model>
+<project>
<parent>
<artifactId>maven-plugin-parent</artifactId>
<groupId>maven</groupId>
@@ -15,15 +15,16 @@
<groupId>maven</groupId>
<artifactId>maven-core</artifactId>
<version>2.0-SNAPSHOT</version>
- <type>jar</type>
- <scope>compile</scope>
</dependency>
<dependency>
<groupId>maven</groupId>
<artifactId>maven-model</artifactId>
<version>2.0-SNAPSHOT</version>
- <type>jar</type>
- <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>plexus</groupId>
+ <artifactId>plexus-archiver</artifactId>
+ <version>1.0-alpha-1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
@@ -49,4 +50,4 @@
</plugin>
</plugins>
</build>
-</model>
+</project>
1.71 +44 -44 maven-components/maven-mboot2/src/main/java/MBoot.java
Index: MBoot.java
===================================================================
RCS file: /home/cvs/maven-components/maven-mboot2/src/main/java/MBoot.java,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- MBoot.java 17 Mar 2005 20:20:49 -0000 1.70
+++ MBoot.java 17 Mar 2005 23:59:07 -0000 1.71
@@ -65,28 +65,25 @@
// ----------------------------------------------------------------------
String[] modelloDeps = new
String[]{"classworlds/jars/classworlds-1.1-alpha-1.jar",
-
//"plexus/jars/plexus-container-api-1.0-alpha-1-SNAPSHOT.jar",
"plexus/jars/plexus-container-default-1.0-alpha-2-SNAPSHOT.jar",
-
//"plexus/jars/plexus-utils-1.0-alpha-1-SNAPSHOT.jar",
"modello/jars/modello-core-1.0-SNAPSHOT.jar",
"modello/jars/modello-xdoc-plugin-1.0-SNAPSHOT.jar",
"modello/jars/modello-xml-plugin-1.0-SNAPSHOT.jar",
"modello/jars/modello-xpp3-plugin-1.0-SNAPSHOT.jar"};
- String[] builds = new String[]{"maven-model", "maven-settings",
"maven-monitor", "maven-plugin",
- "maven-artifact",
"maven-script/maven-script-marmalade", "maven-core",
- "maven-archiver",
"maven-plugin-tools/maven-plugin-tools-api",
+ String[] builds = new String[]{"maven-model", "maven-settings",
"maven-monitor", "maven-plugin", "maven-artifact",
+ "maven-script/maven-script-marmalade",
"maven-core", "maven-archiver",
+
"maven-plugin-tools/maven-plugin-tools-api",
"maven-plugin-tools/maven-plugin-tools-java",
"maven-plugin-tools/maven-plugin-tools-pluggy",
-
"maven-plugin-tools/maven-plugin-tools-marmalade",
- "maven-core-it-verifier"};
+
"maven-plugin-tools/maven-plugin-tools-marmalade", "maven-core-it-verifier"};
- String[] pluginBuilds = new String[]{"maven-plugins/maven-clean-plugin",
"maven-plugins/maven-compiler-plugin",
-
"maven-plugins/maven-deploy-plugin", "maven-plugins/maven-ejb-plugin",
-
"maven-plugins/maven-install-plugin", "maven-plugins/maven-jar-plugin",
-
"maven-plugins/maven-plugin-plugin", "maven-plugins/maven-pom-plugin",
-
"maven-plugins/maven-resources-plugin", "maven-plugins/maven-surefire-plugin",
- "maven-plugins/maven-war-plugin"};
+ String[] pluginBuilds = new
String[]{"maven-plugins/maven-assemble-plugin",
"maven-plugins/maven-clean-plugin",
+
"maven-plugins/maven-compiler-plugin", "maven-plugins/maven-deploy-plugin",
+ "maven-plugins/maven-ejb-plugin",
"maven-plugins/maven-install-plugin",
+ "maven-plugins/maven-jar-plugin",
"maven-plugins/maven-plugin-plugin",
+ "maven-plugins/maven-pom-plugin",
"maven-plugins/maven-resources-plugin",
+
"maven-plugins/maven-surefire-plugin", "maven-plugins/maven-war-plugin"};
private static final Map MODELLO_TARGET_VERSIONS;
@@ -97,12 +94,14 @@
Map targetVersions = new TreeMap();
targetVersions.put( "maven-model", "4.0.0" );
targetVersions.put( "maven-settings", "1.0.0" );
+ targetVersions.put( "maven-plugins/maven-assemble-plugin", "1.0.0" );
MODELLO_TARGET_VERSIONS = Collections.unmodifiableMap(
targetVersions );
Map modelFiles = new TreeMap();
modelFiles.put( "maven-model", "maven.mdo" );
modelFiles.put( "maven-settings", "settings.mdo" );
+ modelFiles.put( "maven-plugins/maven-assemble-plugin",
"src/main/mdo/descriptor.mdo" );
MODELLO_MODEL_FILES = Collections.unmodifiableMap( modelFiles );
}
@@ -222,13 +221,18 @@
mavenRepoLocal = repoDir.getAbsolutePath();
- System.out.println( "You SHOULD have a ~/.m2/settings.xml file
and must contain at least the following information:\n" );
+ System.out.println(
+ "You SHOULD have a ~/.m2/settings.xml file and must contain
at least the following information:" );
+ System.out.println();
- System.out.println( "<settings>\n" + " <profiles>\n" + "
<profile>\n"
- + " <active>true</active>\n"
- + "
<localRepository>/path/to/your/repository</localRepository>\n"
- + " </profile>\n" + " </profiles>\n"
- + "</settings>\n" );
+ System.out.println( "<settings>" );
+ System.out.println( " <profiles>" );
+ System.out.println( " <profile>" );
+ System.out.println( " <active>true</active>" );
+ System.out.println( "
<localRepository>/path/to/your/repository</localRepository>" );
+ System.out.println( " </profile>" );
+ System.out.println( " </profiles>" );
+ System.out.println( "</settings>" );
System.out.println();
@@ -236,8 +240,8 @@
System.out.println();
- System.out.println( "HOWEVER, since you did not specify a
repository path, maven will use: "
- + repoDir.getAbsolutePath() + " to store artifacts locally."
);
+ System.out.println( "HOWEVER, since you did not specify a
repository path, maven will use: " +
+ repoDir.getAbsolutePath() + " to store
artifacts locally." );
}
String mavenHome = null;
@@ -680,10 +684,9 @@
File f = new File( repoLocal, dependency );
if ( !f.exists() )
{
- throw new FileNotFoundException( "Missing dependency: " +
dependency +
- ( !online
- ? "; run again online"
- : "; there was a problem
downloading it earlier" ) );
+ throw new FileNotFoundException(
+ "Missing dependency: " + dependency +
+ ( !online ? "; run again online" : "; there was a
problem downloading it earlier" ) );
}
cl.addURL( f.toURL() );
@@ -700,10 +703,9 @@
File f = new File( repoLocal, dependency );
if ( !f.exists() )
{
- throw new FileNotFoundException( "Missing dependency: " +
dependency +
- ( !online
- ? "; run again online"
- : "; there was a problem
downloading it earlier" ) );
+ throw new FileNotFoundException(
+ "Missing dependency: " + dependency +
+ ( !online ? "; run again online" : "; there was a
problem downloading it earlier" ) );
}
cl.addURL( f.toURL() );
@@ -735,10 +737,9 @@
File f = new File( repoLocal, dependency );
if ( !f.exists() )
{
- throw new FileNotFoundException( "Missing dependency: " +
dependency +
- ( !online
- ? "; run again online"
- : "; there was a problem
downloading it earlier" ) );
+ throw new FileNotFoundException(
+ "Missing dependency: " + dependency +
+ ( !online ? "; run again online" : "; there was a
problem downloading it earlier" ) );
}
modelloClassLoader.addURL( f.toURL() );
@@ -878,9 +879,9 @@
excludes = new ArrayList();
excludes.add( "**/*Abstract*.java" );
-
- String reportsDir = new File(basedir,
"target/test-reports").getAbsolutePath();
-
+
+ String reportsDir = new File( basedir, "target/test-reports"
).getAbsolutePath();
+
boolean success = testRunner.execute( repoLocal, basedir, classes,
testClasses, includes, excludes,
classpath(
reader.getDependencies(), null ), reportsDir );
@@ -1387,7 +1388,7 @@
{
if ( "active".equals( rawName ) )
{
- currentProfile.setActive(
Boolean.valueOf(currentBody.toString().trim()).booleanValue() );
+ currentProfile.setActive( Boolean.valueOf(
currentBody.toString().trim() ).booleanValue() );
}
else if ( "localRepository".equals( rawName ) )
{
@@ -1407,15 +1408,14 @@
}
else
{
- throw new SAXException( "Invalid proxy entry. Missing
one or more " +
- "fields: {host, port}." );
+ throw new SAXException( "Invalid proxy entry. Missing
one or more " + "fields: {host, port}." );
}
}
else if ( currentProxy != null )
{
if ( "active".equals( rawName ) )
{
- currentProxy.setActive(
Boolean.valueOf(currentBody.toString().trim()).booleanValue() );
+ currentProxy.setActive( Boolean.valueOf(
currentBody.toString().trim() ).booleanValue() );
}
else if ( "host".equals( rawName ) )
{
@@ -1446,16 +1446,16 @@
}
else if ( "settings".equals( rawName ) )
{
- if( profiles.size() == 1 )
+ if ( profiles.size() == 1 )
{
- activeProfile = (Profile) profiles.get(0);
+ activeProfile = (Profile) profiles.get( 0 );
}
else
{
for ( Iterator it = profiles.iterator(); it.hasNext(); )
{
Profile profile = (Profile) it.next();
- if( profile.isActive() )
+ if ( profile.isActive() )
{
activeProfile = profile;
}
@@ -1466,7 +1466,7 @@
for ( Iterator it = proxies.iterator(); it.hasNext(); )
{
Proxy proxy = (Proxy) it.next();
- if( proxy.isActive() )
+ if ( proxy.isActive() )
{
activeProxy = proxy;
}