Author: jvelociter
Date: 2008-02-05 15:09:55 +0100 (Tue, 05 Feb 2008)
New Revision: 7298
Modified:
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/pom.xml
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/AbstractXarMojo.java
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/XarMojo.java
Log:
XTOOLS-22 Allow to set a list of includes and excludes when packing/unpacking a
XAR
* Removed the dependency towards maven-archive and maven-project and replaced
it with a dependency to plexus archiver (previously
inherited from mvn archiver) upgrading that one to 1.0-alpha-9 to be able to
use the FileSelector feature of the unarchiver.
* Added the filtering to both Xar and Unxar mojos
Modified: xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/pom.xml
===================================================================
--- xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/pom.xml
2008-02-05 13:59:17 UTC (rev 7297)
+++ xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/pom.xml
2008-02-05 14:09:55 UTC (rev 7298)
@@ -38,18 +38,18 @@
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.apache.maven</groupId>
- <artifactId>maven-archiver</artifactId>
- <version>2.2</version>
- </dependency>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-archiver</artifactId>
+ <version>1.0-alpha-9</version>
+ </dependency>
<dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- <version>1.4</version>
- </dependency>
- <dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>2.0</version>
Modified:
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/AbstractXarMojo.java
===================================================================
---
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/AbstractXarMojo.java
2008-02-05 13:59:17 UTC (rev 7297)
+++
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/AbstractXarMojo.java
2008-02-05 14:09:55 UTC (rev 7298)
@@ -1,14 +1,12 @@
package com.xpn.xwiki.tool.xar;
import java.io.File;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
-import org.codehaus.plexus.archiver.ArchiveFileFilter;
import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
+import org.codehaus.plexus.components.io.fileselectors.FileSelector;
+import
org.codehaus.plexus.components.io.fileselectors.IncludeExcludeFileSelector;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.logging.console.ConsoleLogger;
@@ -35,6 +33,54 @@
protected static final String PACKAGE_XML = "package.xml";
/**
+ * List of files to include. Specified as fileset patterns.
+ *
+ * @parameter
+ */
+ protected String[] includes;
+
+ /**
+ * List of files to exclude. Specified as fileset patterns.
+ *
+ * @parameter
+ */
+ protected String[] excludes;
+
+ /**
+ * Default excludes
+ */
+ private static final String[] DEFAULT_EXCLUDES = null;
+
+ /**
+ * Default includes
+ */
+ private static final String[] DEFAULT_INCLUDES = new String[] { "**/**" };
+
+ /**
+ * @return the includes
+ */
+ protected String[] getIncludes()
+ {
+ if ( includes != null && includes.length > 0 )
+ {
+ return includes;
+ }
+ return DEFAULT_INCLUDES;
+ }
+
+ /**
+ * @return the excludes
+ */
+ protected String[] getExcludes()
+ {
+ if ( excludes != null && excludes.length > 0 )
+ {
+ return excludes;
+ }
+ return DEFAULT_EXCLUDES;
+ }
+
+ /**
* Unpacks the XAR file (exclude the package.xml file if it exists).
*
* @param file the file to be unpacked.
@@ -51,7 +97,13 @@
unArchiver.enableLogging(new ConsoleLogger(Logger.LEVEL_ERROR,
logName));
unArchiver.setSourceFile(file);
unArchiver.setDestDirectory(location);
-
+
+ FileSelector[] selectors;
+
+ IncludeExcludeFileSelector fs = new IncludeExcludeFileSelector();
+ fs.setIncludes(getIncludes());
+ fs.setExcludes(getExcludes());
+
// Ensure that we don't overwrite XML document files present in
this project since
// we want those to be used and not the ones in the dependent XAR.
unArchiver.setOverwrite(overwrite);
@@ -59,17 +111,16 @@
if (!overwrite) {
// Do not unpack any package.xml file in dependant XARs. We'll
generate a complete
// one automatically.
- List filters = new ArrayList();
- filters.add(new ArchiveFileFilter()
- {
- public boolean include(InputStream dataStream, String
entryName)
- {
- return (!entryName.equals(PACKAGE_XML));
- }
- });
- unArchiver.setArchiveFilters(filters);
+ IncludeExcludeFileSelector fs2 = new
IncludeExcludeFileSelector();
+ fs2.setExcludes(new String[]{PACKAGE_XML});
+ selectors = new FileSelector[]{fs, fs2};
}
+ else {
+ selectors = new FileSelector[]{fs};
+ }
+ unArchiver.setFileSelectors(selectors);
+
unArchiver.extract();
} catch (Exception e) {
throw new MojoExecutionException("Error unpacking file " +
HOOK_OPEN + file
Modified:
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/XarMojo.java
===================================================================
---
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/XarMojo.java
2008-02-05 13:59:17 UTC (rev 7297)
+++
xwiki-platform/xwiki-tools/trunk/build-tools/build-xar-plugin/src/main/java/com/xpn/xwiki/tool/xar/XarMojo.java
2008-02-05 14:09:55 UTC (rev 7298)
@@ -109,7 +109,7 @@
// existing files since we want this projet's files to be used if they
override a file
// present in a XAR dependency.
unpackDependentXars();
- archiver.addDirectory(sourceDir);
+ archiver.addDirectory(sourceDir, getIncludes(), getExcludes());
// If no package.xml can be found at the top level of the current
project, generate one
if (archiver.getFiles().get(PACKAGE_XML) == null) {
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications