diff --git a/tools/maven2/maven-osgi-plugin/pom.xml b/tools/maven2/maven-osgi-plugin/pom.xml
index f647847..b30c058 100644
--- a/tools/maven2/maven-osgi-plugin/pom.xml
+++ b/tools/maven2/maven-osgi-plugin/pom.xml
@@ -4,7 +4,7 @@
   <artifactId>maven-osgi-plugin</artifactId>
   <packaging>maven-plugin</packaging>
   <name>Maven OSGi Plugin</name>
-  <version>0.1.1</version>
+  <version>0.1.2</version>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiJarMojo.java b/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiJarMojo.java
index ee8170b..0b7bc821 100644
--- a/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiJarMojo.java
+++ b/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiJarMojo.java
@@ -100,16 +100,14 @@
             merging of manifest entries located in some file somewhere in the project
             directory?  If so, do we allow both file and configuration based entries
             to be specified simultaneously and how do we merge these?
-
-            For now... I'm going to disable support for file-based manifest entries.
         */
-        //if (manifestFile != null) {
-        //    File file = new File(project.getBasedir().getAbsolutePath(), manifestFile);
-        //    getLog().info("Manifest file: " + file.getAbsolutePath() + " will be used");
-        //    archive.setManifestFile(file);
-        //} else {
-        //    getLog().info("No manifest file specified. Default will be used.");
-        //}
+        if (manifestFile != null) {
+            File file = new File(project.getBasedir().getAbsolutePath(), manifestFile);
+            getLog().info("Manifest file: " + file.getAbsolutePath() + " will be used");
+            archive.setManifestFile(file);
+        } else {
+            getLog().info("No manifest file specified. Default will be used.");
+        }
 
         // Look for any OSGi specified manifest entries in the maven-felix-plugin configuration
         // section of the POM.  If we find some, then add them to the target artifact's manifest.
diff --git a/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiManifest.java b/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiManifest.java
index d7a13b8..5a8e299 100644
--- a/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiManifest.java
+++ b/tools/maven2/maven-osgi-plugin/src/main/java/org/apache/felix/tools/maven/plugin/OsgiManifest.java
@@ -36,6 +36,8 @@
     private String bundleDate;
     private String bundleUpdateLocation;
     private String bundleSymbolicName;
+	private String bundleDocUrl;
+	private String bundleCategory;
 	private String exportService;
     private String exportPackage;
     private String importPackage;
@@ -86,9 +88,31 @@
         if (getMetadataLocation() != null) {
             entries.put("Metadata-Location", getMetadataLocation());
         }
+		if (getBundleCategory() != null) {
+			entries.put("Bundle-Category", getBundleCategory());
+		}
+		if (getBundleDocUrl() != null) {
+			entries.put("Bundle-DocUrl", getBundleDocUrl());
+		}
         return (Map) entries;
     }
 
+    public String getBundleDocUrl() {
+        return bundleDocUrl;
+    }
+
+    public void setBundleDocUrl(String bundleDocUrl) {
+        this.bundleDocUrl = bundleDocUrl;
+    }
+
+    public String getBundleCategory() {
+        return bundleCategory;
+    }
+
+    public void setBundleCategory(String bundleCategory) {
+        this.bundleCategory = bundleCategory;
+    }
+
     public String getBundleActivator() {
         return bundleActivator;
     }
