cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aadamc...@apache.org
Subject svn commit: r490078 - /incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/
Date Sun, 24 Dec 2006 22:44:02 GMT
Author: aadamchik
Date: Sun Dec 24 14:44:01 2006
New Revision: 490078

URL: http://svn.apache.org/viewvc?view=rev&rev=490078
Log:
CAY-719:Finalize Maven assembly scripts for the upcoming 3.0 milestone releases
(added filtering capabilities)

Added:
    incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/PatternGroup.java
Modified:
    incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/AbstractAggregatorMojo.java
    incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/BinAggregatorMojo.java
    incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/JavadocsAggregatorMojo.java
    incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/SourcesAggregatorMojo.java

Modified: incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/AbstractAggregatorMojo.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/AbstractAggregatorMojo.java?view=diff&rev=490078&r1=490077&r2=490078
==============================================================================
--- incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/AbstractAggregatorMojo.java
(original)
+++ incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/AbstractAggregatorMojo.java
Sun Dec 24 14:44:01 2006
@@ -108,7 +108,7 @@
     protected MavenProject project;
 
     protected abstract File getUnpackDirectory();
-    
+
     /**
      * Preprocesses the list of ArtifactItems. This method defaults the outputDirectory if
      * not set and creates the output Directory if it doesn't exist.
@@ -122,12 +122,12 @@
         Iterator iter = artifactItems.iterator();
         while (iter.hasNext()) {
             ArtifactItem artifactItem = (ArtifactItem) iter.next();
-            this.getLog().info("Configured Artifact: " + artifactItem.toString());
+            getLog().debug("Configured artifact: " + artifactItem.toString());
 
             if (artifactItem.getOutputDirectory() == null) {
                 artifactItem.setOutputDirectory(getUnpackDirectory());
             }
-            
+
             artifactItem.getOutputDirectory().mkdirs();
         }
         return artifactItems;

Modified: incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/BinAggregatorMojo.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/BinAggregatorMojo.java?view=diff&rev=490078&r1=490077&r2=490078
==============================================================================
--- incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/BinAggregatorMojo.java
(original)
+++ incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/BinAggregatorMojo.java
Sun Dec 24 14:44:01 2006
@@ -1,20 +1,22 @@
 package org.apache.cayenne.maven.plugin.aggregator;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Iterator;
 
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.jar.JarArchiver;
 import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
 
 /**
- * A goal to build aggregated jar artifacts from multiple "standard" artifacts.
+ * A goal to build aggregated jar artifacts from multiple other artifacts.
  * 
  * @author Andrus Adamchik
  * @goal aggregate-bin
+ * @phase package
+ * @requiresProject
  */
 public class BinAggregatorMojo extends AbstractAggregatorMojo {
 
@@ -22,10 +24,6 @@
         "META-INF/maven/**"
     };
 
-    static final String[] DEFAULT_INCLUDES = new String[] {
-        "**/**"
-    };
-
     /**
      * Default location used for mojo unless overridden in ArtifactItem
      * 
@@ -43,6 +41,20 @@
      */
     private String finalName;
 
+    /**
+     * A file that contains excludes patterns.
+     * 
+     * @parameter
+     */
+    private File excludesFile;
+
+    /**
+     * A file that contains includes patterns.
+     * 
+     * @parameter
+     */
+    private File includesFile;
+
     protected File getUnpackDirectory() {
         return unpackDirectory;
     }
@@ -55,38 +67,59 @@
             unpackArtifact(artifactItem);
         }
 
-        packArtifact();
+        File file = packArtifact();
+        getLog().warn("created jar " + file.getAbsolutePath());
+        project.getArtifact().setFile(file);
     }
 
-    private void packArtifact() throws MojoExecutionException {
-        // pack...
+    private File packArtifact() throws MojoExecutionException {
+
         File outputDirectory = new File(project.getBuild().getDirectory());
         File destinationFile = new File(outputDirectory, finalName + ".jar");
 
-        Archiver archiver;
+        JarArchiver jarArchiver;
         try {
-            archiver = archiverManager.getArchiver("jar");
+            jarArchiver = (JarArchiver) archiverManager.getArchiver("jar");
         }
         catch (NoSuchArchiverException e) {
             throw new MojoExecutionException("Unknown archiver type", e);
         }
 
+        PatternGroup excludes = new PatternGroup(excludesFile);
+        excludes.addPatterns(DEFAULT_EXCLUDES);
+
+        PatternGroup includes = new PatternGroup(includesFile);
+        if (includes.size() == 0) {
+            includes.addPatterns(new String[] {
+                "**/**"
+            });
+        }
+
+        // MavenArchiver adds Maven stuff into META-INF
+        MavenArchiver archiver = new MavenArchiver();
+        archiver.setArchiver(jarArchiver);
+        archiver.setOutputFile(destinationFile);
+
+        MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
+
         try {
-            archiver.setDestFile(destinationFile);
-            archiver.addDirectory(
-                    getUnpackDirectory(),
-                    DEFAULT_INCLUDES,
-                    DEFAULT_EXCLUDES);
-            archiver.createArchive();
-        }
-        catch (ArchiverException e) {
-            throw new MojoExecutionException("Error creating archive", e);
+            File contentDirectory = getUnpackDirectory();
+            if (!contentDirectory.exists()) {
+                getLog().warn("JAR will be empty - no content was marked for inclusion!");
+            }
+            else {
+                archiver.getArchiver().addDirectory(
+                        contentDirectory,
+                        includes.getPatterns(),
+                        excludes.getPatterns());
+            }
+
+            archiver.createArchive(project, archive);
         }
-        catch (IOException e) {
-            throw new MojoExecutionException("IO Error creating archive", e);
+        catch (Exception e) {
+            throw new MojoExecutionException("Error assembling JAR", e);
         }
 
-        // make it a project artifact
-        project.getArtifact().setFile(destinationFile);
+        return destinationFile;
     }
 }

Modified: incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/JavadocsAggregatorMojo.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/JavadocsAggregatorMojo.java?view=diff&rev=490078&r1=490077&r2=490078
==============================================================================
--- incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/JavadocsAggregatorMojo.java
(original)
+++ incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/JavadocsAggregatorMojo.java
Sun Dec 24 14:44:01 2006
@@ -24,7 +24,7 @@
 import org.apache.maven.plugin.MojoFailureException;
 
 /**
- * A goal to build aggregated javadocs artifacts from multiple "standard" artifacts.
+ * A goal to build an aggregated javadocs artifact from multiple source artifacts.
  * 
  * @author Andrus Adamchik
  * @goal aggregate-javadocs
@@ -45,5 +45,6 @@
     }
 
     public void execute() throws MojoExecutionException, MojoFailureException {
+        // TODO
     }
 }

Added: incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/PatternGroup.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/PatternGroup.java?view=auto&rev=490078
==============================================================================
--- incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/PatternGroup.java
(added)
+++ incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/PatternGroup.java
Sun Dec 24 14:44:01 2006
@@ -0,0 +1,92 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.maven.plugin.aggregator;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.maven.plugin.MojoExecutionException;
+
+public class PatternGroup {
+
+    protected Collection patterns;
+
+    static Collection parsePatterns(File patternsFile) throws MojoExecutionException {
+        Collection patterns = new ArrayList();
+
+        if (patternsFile == null || !patternsFile.isFile()) {
+            return patterns;
+        }
+
+        BufferedReader in;
+        try {
+            in = new BufferedReader(new FileReader(patternsFile));
+        }
+        catch (FileNotFoundException e) {
+            throw new MojoExecutionException("Error reading patterns file "
+                    + patternsFile, e);
+        }
+
+        try {
+            String line;
+            while ((line = in.readLine()) != null) {
+                patterns.add(line);
+            }
+        }
+        catch (IOException e) {
+            throw new MojoExecutionException("Error reading patterns file "
+                    + patternsFile, e);
+        }
+        finally {
+            try {
+                in.close();
+            }
+            catch (IOException ioex) {
+            }
+        }
+
+        return patterns;
+    }
+
+    public PatternGroup(Collection patterns) {
+        this.patterns = patterns;
+    }
+
+    public PatternGroup(File patternsFile) throws MojoExecutionException {
+        this(parsePatterns(patternsFile));
+    }
+
+    public void addPatterns(String[] patterns) {
+        this.patterns.addAll(Arrays.asList(patterns));
+    }
+
+    public String[] getPatterns() {
+        return (String[]) patterns.toArray(new String[patterns.size()]);
+    }
+    
+    public int size() {
+        return patterns.size();
+    }
+}

Modified: incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/SourcesAggregatorMojo.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/SourcesAggregatorMojo.java?view=diff&rev=490078&r1=490077&r2=490078
==============================================================================
--- incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/SourcesAggregatorMojo.java
(original)
+++ incubator/cayenne/main/trunk/other/build-maven-plugin/src/main/java/org/apache/cayenne/maven/plugin/aggregator/SourcesAggregatorMojo.java
Sun Dec 24 14:44:01 2006
@@ -24,7 +24,7 @@
 import org.apache.maven.plugin.MojoFailureException;
 
 /**
- * A goal to build aggregated sources artifacts from multiple "standard" artifacts.
+ * A goal to build an aggregated source artifact from multiple source artifacts.
  * 
  * @author Andrus Adamchik
  * @goal aggregate-sources
@@ -45,5 +45,6 @@
     }
 
     public void execute() throws MojoExecutionException, MojoFailureException {
+        // TODO
     }
 }



Mime
View raw message