Author: mcculls
Date: Thu Dec 27 01:16:34 2007
New Revision: 607025

URL: http://svn.apache.org/viewvc?rev=607025&view=rev
Log:
FELIX-442: Add manifest entries from maven-jar-plugin configuration to final 
bundle

Added:
    
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/JarPluginConfiguration.java
   (with props)
Modified:
    felix/trunk/bundleplugin/pom.xml
    
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java

Modified: felix/trunk/bundleplugin/pom.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/bundleplugin/pom.xml?rev=607025&r1=607024&r2=607025&view=diff
==============================================================================
--- felix/trunk/bundleplugin/pom.xml (original)
+++ felix/trunk/bundleplugin/pom.xml Thu Dec 27 01:16:34 2007
@@ -74,6 +74,11 @@
    <version>2.0.7</version>
   </dependency>
   <dependency>
+   <groupId>org.apache.maven</groupId>
+   <artifactId>maven-archiver</artifactId>
+   <version>2.2</version>
+  </dependency>
+  <dependency>
    <groupId>org.apache.maven.shared</groupId>
    <artifactId>maven-dependency-tree</artifactId>
    <version>1.1</version>

Modified: 
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java?rev=607025&r1=607024&r2=607025&view=diff
==============================================================================
--- 
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
 (original)
+++ 
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
 Thu Dec 27 01:16:34 2007
@@ -34,6 +34,8 @@
 import java.util.jar.Manifest;
 import java.util.zip.ZipException;
 
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.model.License;
@@ -46,6 +48,7 @@
 import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
 import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.util.StringInputStream;
 
 import aQute.lib.osgi.Analyzer;
 import aQute.lib.osgi.Builder;
@@ -317,6 +320,32 @@
                 }
             }
 
+            try
+            {
+                /*
+                 * Grab customized manifest entries from the maven-jar-plugin 
configuration
+                 */
+                MavenArchiveConfiguration archiveConfig = 
JarPluginConfiguration.getArchiveConfiguration( project );
+                String mavenManifestText = new MavenArchiver().getManifest( 
project, archiveConfig ).toString();
+
+                Manifest mavenManifest = new Manifest();
+                mavenManifest.read( new StringInputStream( mavenManifestText ) 
);
+                Manifest bundleManifest = jar.getManifest();
+
+                /*
+                 * Overlay customized Maven manifest with the generated bundle 
manifest
+                 */
+                mavenManifest.getMainAttributes().putAll( 
bundleManifest.getMainAttributes() );
+                mavenManifest.getMainAttributes().putValue( "Created-By", 
"Apache Maven Bundle Plugin" );
+                mavenManifest.getEntries().putAll( bundleManifest.getEntries() 
);
+
+                jar.setManifest( mavenManifest );
+            }
+            catch (Exception e)
+            {
+                getLog().warn( "Unable to merge Maven manifest" );
+            }
+            
             jarFile.getParentFile().mkdirs();
             builder.getJar().write(jarFile);
             Artifact bundleArtifact = project.getArtifact();

Added: 
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/JarPluginConfiguration.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/JarPluginConfiguration.java?rev=607025&view=auto
==============================================================================
--- 
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/JarPluginConfiguration.java
 (added)
+++ 
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/JarPluginConfiguration.java
 Thu Dec 27 01:16:34 2007
@@ -0,0 +1,74 @@
+/*
+ * 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.felix.bundleplugin;
+
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.project.MavenProject;
+import 
org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter;
+import 
org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
+import 
org.codehaus.plexus.component.configurator.converters.lookup.DefaultConverterLookup;
+import 
org.codehaus.plexus.component.configurator.expression.DefaultExpressionEvaluator;
+import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
+import org.codehaus.plexus.configuration.PlexusConfiguration;
+import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+/**
+ * Provide access to the archive configuration from the jar plugin
+ * 
+ * @author [EMAIL PROTECTED] (Stuart McCulloch)
+ */
+public class JarPluginConfiguration
+{
+    public static MavenArchiveConfiguration getArchiveConfiguration( 
MavenProject project )
+    {
+        MavenArchiveConfiguration archiveConfig = new 
MavenArchiveConfiguration();
+
+        try
+        {
+            ObjectWithFieldsConverter converter = new 
ObjectWithFieldsConverter();
+            ClassLoader loader = JarPluginConfiguration.class.getClassLoader();
+            ExpressionEvaluator evaluator = new DefaultExpressionEvaluator();
+            ConverterLookup converters = new DefaultConverterLookup();
+
+            PlexusConfiguration pluginSettings = getCorePluginConfiguration( 
project, "jar" );
+            PlexusConfiguration archiveSettings = pluginSettings.getChild( 
"archive" );
+
+            converter.processConfiguration( converters, archiveConfig, loader, 
archiveSettings, evaluator, null );
+        }
+        catch( Exception e )
+        {
+            // ignore and return empty configuration...
+        }
+
+        return archiveConfig;
+    }
+
+    private static PlexusConfiguration getCorePluginConfiguration( 
MavenProject project, String pluginName )
+    {
+        return getPluginConfiguration( project, "org.apache.maven.plugins", 
"maven-" + pluginName + "-plugin" );
+    }
+
+    private static PlexusConfiguration getPluginConfiguration( MavenProject 
project, String groupId, String artifactId )
+    {
+        Xpp3Dom pluginConfig = project.getGoalConfiguration( groupId, 
artifactId, null, null );
+
+        return new XmlPlexusConfiguration( pluginConfig );
+    }
+}

Propchange: 
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/JarPluginConfiguration.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to