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

Reply via email to