You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by dj...@apache.org on 2010/02/27 00:56:58 UTC

svn commit: r916872 - in /incubator/aries/trunk/application/eba-maven-plugin: ./ src/main/java/org/apache/aries/plugin/eba/ src/test/java/org/apache/aries/plugin/eba/ src/test/resources/unit/basic-eba-test/ src/test/resources/unit/basic-eba-with-descri...

Author: djencks
Date: Fri Feb 26 23:56:58 2010
New Revision: 916872

URL: http://svn.apache.org/viewvc?rev=916872&view=rev
Log:
ARIES-120 use zip archiver to avoid manifest.mf

Modified:
    incubator/aries/trunk/application/eba-maven-plugin/pom.xml
    incubator/aries/trunk/application/eba-maven-plugin/src/main/java/org/apache/aries/plugin/eba/EbaMojo.java
    incubator/aries/trunk/application/eba-maven-plugin/src/test/java/org/apache/aries/plugin/eba/EbaMojoTest.java
    incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-test/plugin-config.xml
    incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-descriptor/plugin-config.xml
    incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-manifest/plugin-config.xml

Modified: incubator/aries/trunk/application/eba-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/eba-maven-plugin/pom.xml?rev=916872&r1=916871&r2=916872&view=diff
==============================================================================
--- incubator/aries/trunk/application/eba-maven-plugin/pom.xml (original)
+++ incubator/aries/trunk/application/eba-maven-plugin/pom.xml Fri Feb 26 23:56:58 2010
@@ -57,7 +57,7 @@
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-archiver</artifactId>
-            <version>2.2</version>
+            <version>2.3</version>
         </dependency>
         <dependency>
             <groupId>org.apache.maven.shared</groupId>

Modified: incubator/aries/trunk/application/eba-maven-plugin/src/main/java/org/apache/aries/plugin/eba/EbaMojo.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/eba-maven-plugin/src/main/java/org/apache/aries/plugin/eba/EbaMojo.java?rev=916872&r1=916871&r2=916872&view=diff
==============================================================================
--- incubator/aries/trunk/application/eba-maven-plugin/src/main/java/org/apache/aries/plugin/eba/EbaMojo.java (original)
+++ incubator/aries/trunk/application/eba-maven-plugin/src/main/java/org/apache/aries/plugin/eba/EbaMojo.java Fri Feb 26 23:56:58 2010
@@ -19,22 +19,21 @@
  * under the License.
  */
 
+import org.apache.maven.archiver.PomPropertiesUtil;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.archiver.MavenArchiver;
-import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.artifact.Artifact;
 import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.archiver.jar.JarArchiver;
-import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.archiver.zip.ZipArchiver;
 import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.Set;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 
 /**
  * Builds Aries Enterprise Bundle Archive (eba) files.
@@ -125,17 +124,31 @@
     /**
      * The Jar archiver.
      *
-     * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
+     * @parameter expression="${component.org.codehaus.plexus.archiver.Archiver#zip}"
+     * @required
      */
-    private JarArchiver jarArchiver;
+    private ZipArchiver zipArchiver;
 
     /**
-     * The archive configuration to use.
-     * See <a href="http://maven.apache.org/shared/maven-archiver/index.html">Maven Archiver Reference</a>.
+     * Adding pom.xml and pom.properties to the archive.
      *
-     * @parameter
+     * @parameter expression="${addMavenDescriptor}" default-value="true"
+     */
+    private boolean addMavenDescriptor;
+
+    /**
+     * Include or not empty directories
+     *
+     * @parameter expression="${zip.includeEmptyDirs}" default-value="true"
+     */
+    private boolean includeEmptyDirs;
+
+    /**
+     * Whether creating the archive should be forced.
+     *
+     * @parameter expression="${zip.forceCreation}" default-value="false"
      */
-    private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
+    private boolean forceCreation;
 
 
     private File buildDir;
@@ -152,6 +165,9 @@
         getLog().debug( "outputDirectory[" + outputDirectory + "]" );
         getLog().debug( "finalName[" + finalName + "]" );
 
+        zipArchiver.setIncludeEmptyDirs( includeEmptyDirs );
+        zipArchiver.setCompress( true );
+        zipArchiver.setForced( forceCreation );
         // Check if jar file is there and if requested, copy it
         try
         {
@@ -159,7 +175,7 @@
                 File generatedJarFile = new File( outputDirectory, finalName + ".jar" );
                 if (generatedJarFile.exists()) {
                     getLog().info( "Including generated jar file["+generatedJarFile.getName()+"]");
-                    jarArchiver.addFile(generatedJarFile, finalName + ".jar");
+                    zipArchiver.addFile(generatedJarFile, finalName + ".jar");
                 }
             }
         }
@@ -182,7 +198,7 @@
                 {
                     getLog().info("Copying artifact[" + artifact.getGroupId() + ", " + artifact.getId() + ", " +
                         artifact.getScope() + "]");
-                    jarArchiver.addFile(artifact.getFile(), artifact.getArtifactId() + "-" + artifact.getVersion() + "." + (artifact.getType() == null? "jar": artifact.getType()));
+                    zipArchiver.addFile(artifact.getFile(), artifact.getArtifactId() + "-" + artifact.getVersion() + "." + (artifact.getType() == null? "jar": artifact.getType()));
                 }
             }
         }
@@ -250,24 +266,34 @@
 
         try
         {
-            File ebaFile = new File( outputDirectory, finalName + ".eba" );
-            MavenArchiver archiver = new MavenArchiver();
-            archiver.setArchiver( jarArchiver );
-            archiver.setOutputFile( ebaFile );
+            if (addMavenDescriptor) {
+                if (project.getArtifact().isSnapshot()) {
+                    project.setVersion(project.getArtifact().getVersion());
+                }
+
+                String groupId = project.getGroupId();
+
+                String artifactId = project.getArtifactId();
 
-            // Include custom manifest if necessary
-            includeCustomManifestFile();
+                zipArchiver.addFile(project.getFile(), "META-INF/maven/" + groupId + "/" + artifactId + "/pom.xml");
+                PomPropertiesUtil pomPropertiesUtil = new PomPropertiesUtil();
+                File dir = new File(project.getBuild().getDirectory(), "maven-zip-plugin");
+                File pomPropertiesFile = new File(dir, "pom.properties");
+                pomPropertiesUtil.createPomProperties(project, zipArchiver, pomPropertiesFile, forceCreation);
+            }
+            File ebaFile = new File( outputDirectory, finalName + ".eba" );
+            zipArchiver.setDestFile(ebaFile);
 
             File buildDir = getBuildDir();
             if (buildDir.isDirectory()) {
-                jarArchiver.addDirectory(buildDir);
+                zipArchiver.addDirectory(buildDir);
             }
             //include legal files if any
             File sharedResourcesDir = new File(sharedResources);
             if (sharedResourcesDir.isDirectory()) {
-                jarArchiver.addDirectory(sharedResourcesDir);
+                zipArchiver.addDirectory(sharedResourcesDir);
             }
-            archiver.createArchive( project, archive );
+            zipArchiver.createArchive();
 
             project.getArtifact().setFile( ebaFile );
         }
@@ -286,23 +312,6 @@
         return buildDir;
     }
 
-    private void includeCustomManifestFile()
-        throws IOException
-    {
-        File customManifestFile = manifestFile;
-        if ( !customManifestFile.exists() )
-        {
-            getLog().info( "Could not find manifest file: " + manifestFile +" - Generating one");
-        }
-        else
-        {
-            getLog().info( "Including custom manifest file[" + customManifestFile + "]" );
-            archive.setManifestFile( customManifestFile );
-            File metaInfDir = new File(getBuildDir(), "META-INF");
-            FileUtils.copyFileToDirectory( customManifestFile, metaInfDir );
-        }
-    }
-
     private void includeCustomApplicationManifestFile()
         throws IOException
     {

Modified: incubator/aries/trunk/application/eba-maven-plugin/src/test/java/org/apache/aries/plugin/eba/EbaMojoTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/eba-maven-plugin/src/test/java/org/apache/aries/plugin/eba/EbaMojoTest.java?rev=916872&r1=916871&r2=916872&view=diff
==============================================================================
--- incubator/aries/trunk/application/eba-maven-plugin/src/test/java/org/apache/aries/plugin/eba/EbaMojoTest.java (original)
+++ incubator/aries/trunk/application/eba-maven-plugin/src/test/java/org/apache/aries/plugin/eba/EbaMojoTest.java Fri Feb 26 23:56:58 2010
@@ -87,7 +87,7 @@
         expectedFiles.add( "META-INF/maven/org.apache.maven.test/maven-eba-test/" );
         expectedFiles.add( "META-INF/maven/org.apache.maven.test/" );
         expectedFiles.add( "META-INF/maven/" );
-        expectedFiles.add( "META-INF/MANIFEST.MF" );
+//        expectedFiles.add( "META-INF/MANIFEST.MF" );
         expectedFiles.add( "META-INF/" );
         expectedFiles.add( "maven-artifact01-1.0-SNAPSHOT.jar" );
         expectedFiles.add( "maven-artifact02-1.0-SNAPSHOT.jar" );
@@ -99,7 +99,10 @@
 
         assertTrue( entries.hasMoreElements() );
 
-        assertEquals( 0, getSizeOfExpectedFiles( entries, expectedFiles ) );
+        assertTrue( entries.hasMoreElements() );
+
+        int missing = getSizeOfExpectedFiles(entries, expectedFiles);
+        assertEquals("Missing files: " + expectedFiles,  0, missing);
     }
 
     public void testBasicEbaWithDescriptor()
@@ -133,7 +136,7 @@
         expectedFiles.add( "META-INF/maven/org.apache.maven.test/maven-eba-test/" );
         expectedFiles.add( "META-INF/maven/org.apache.maven.test/" );
         expectedFiles.add( "META-INF/maven/" );
-        expectedFiles.add( "META-INF/MANIFEST.MF" );
+//        expectedFiles.add( "META-INF/MANIFEST.MF" );
         expectedFiles.add( "META-INF/application.mf" );
         expectedFiles.add( "META-INF/" );
         expectedFiles.add( "maven-artifact01-1.0-SNAPSHOT.jar" );
@@ -145,7 +148,10 @@
 
         assertTrue( entries.hasMoreElements() );
 
-        assertEquals( 0, getSizeOfExpectedFiles( entries, expectedFiles ) );
+        assertTrue( entries.hasMoreElements() );
+
+        int missing = getSizeOfExpectedFiles(entries, expectedFiles);
+        assertEquals("Missing files: " + expectedFiles,  0, missing);
     }
 
     public void testBasicEbaWithManifest()
@@ -192,7 +198,8 @@
 
         assertTrue( entries.hasMoreElements() );
 
-        assertEquals( 0, getSizeOfExpectedFiles( entries, expectedFiles ) );
+        int missing = getSizeOfExpectedFiles(entries, expectedFiles);
+        assertEquals("Missing files: " + expectedFiles,  0, missing);
     }
 
     private int getSizeOfExpectedFiles( Enumeration entries, List expectedFiles )
@@ -214,41 +221,4 @@
         return expectedFiles.size();
     }
 
-    private int getSizeOfExpectedFiles( List fileList, List expectedFiles )
-    {
-        for( Iterator iter=fileList.iterator(); iter.hasNext(); )
-        {
-            String fileName = ( String ) iter.next();
-
-            if( expectedFiles.contains(  fileName ) )
-            {
-                expectedFiles.remove( fileName );
-                assertFalse( expectedFiles.contains( fileName ) );
-            }
-            else
-            {
-                fail( fileName + " is not included in the expected files" );
-            }
-        }
-        return expectedFiles.size();
-    }
-
-    private void addFileToList( File file, List fileList )
-    {
-        if( !file.isDirectory() )
-        {
-            fileList.add( file.getName() );
-        }
-        else
-        {
-            fileList.add( file.getName() );
-
-            File[] files = file.listFiles();
-
-            for( int i=0; i<files.length; i++ )
-            {
-                addFileToList( files[i], fileList );
-            }
-        }
-    }
 }

Modified: incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-test/plugin-config.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-test/plugin-config.xml?rev=916872&r1=916871&r2=916872&view=diff
==============================================================================
--- incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-test/plugin-config.xml (original)
+++ incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-test/plugin-config.xml Fri Feb 26 23:56:58 2010
@@ -26,6 +26,8 @@
 		  <ebaSourceDirectory>${basedir}/src/test/resources/unit/basic-eba-test/src/main/eba</ebaSourceDirectory>
 		  <applicationManifestFile>${basedir}/src/test/resources/unit/basic-eba-test/src/main/eba/META-INF/application.mf</applicationManifestFile>
 		  <includeJar>true</includeJar>
+          <addMavenDescriptor>true</addMavenDescriptor>
+          <includeEmptyDirs>true</includeEmptyDirs>
 		  <manifestFile>${basedir}/src/main/eba/META-INF/MANIFEST.MF</manifestFile>
 		  <workDirectory>${basedir}/target/unit/basic-eba-test/target/eba-test</workDirectory>
 		  <sharedResources>${basedir}/target/unit/basic-eba-test/target/maven-shared-archive-resources</sharedResources>

Modified: incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-descriptor/plugin-config.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-descriptor/plugin-config.xml?rev=916872&r1=916871&r2=916872&view=diff
==============================================================================
--- incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-descriptor/plugin-config.xml (original)
+++ incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-descriptor/plugin-config.xml Fri Feb 26 23:56:58 2010
@@ -26,6 +26,8 @@
 		  <ebaSourceDirectory>${basedir}/src/test/resources/unit/basic-eba-with-descriptor/src/main/eba</ebaSourceDirectory>
 		  <applicationManifestFile>${basedir}/src/test/resources/unit/basic-eba-with-descriptor/src/main/eba/META-INF/application.mf</applicationManifestFile>
 		  <includeJar>false</includeJar>
+          <addMavenDescriptor>true</addMavenDescriptor>
+          <includeEmptyDirs>true</includeEmptyDirs>
 		  <manifestFile>${basedir}/src/test/resources/unit/basic-eba-with-descriptor/src/main/eba/META-INF/MANIFEST.MF</manifestFile>
 		  <workDirectory>${basedir}/target/unit/basic-eba-with-descriptor/target/eba-test-with-descriptor</workDirectory>
           <sharedResources>${basedir}/target/unit/basic-eba-with-descriptor/target/maven-shared-archive-resources</sharedResources>

Modified: incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-manifest/plugin-config.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-manifest/plugin-config.xml?rev=916872&r1=916871&r2=916872&view=diff
==============================================================================
--- incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-manifest/plugin-config.xml (original)
+++ incubator/aries/trunk/application/eba-maven-plugin/src/test/resources/unit/basic-eba-with-manifest/plugin-config.xml Fri Feb 26 23:56:58 2010
@@ -26,6 +26,8 @@
 		  <ebaSourceDirectory>${basedir}/src/test/resources/unit/basic-eba-with-manifest/src/main/eba</ebaSourceDirectory>
 		  <applicationManifestFile>${basedir}/src/test/resources/unit/basic-eba-with-manifest/src/main/eba/META-INF/application.mf</applicationManifestFile>
 		  <includeJar>false</includeJar>
+          <addMavenDescriptor>true</addMavenDescriptor>
+          <includeEmptyDirs>true</includeEmptyDirs>
 		  <manifestFile>${basedir}/src/test/resources/unit/basic-eba-with-manifest/src/main/eba/META-INF/MANIFEST.MF</manifestFile>
 		  <workDirectory>${basedir}/target/unit/basic-eba-with-manifest/target/eba-test-with-manifest</workDirectory>
           <sharedResources>${basedir}/target/unit/basic-eba-with-manifest/target/maven-shared-archive-resources</sharedResources>