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