diff --git a/bundleplugin/doc/site/index.html b/bundleplugin/doc/site/index.html
new file mode 100644
index 0000000..4262a80
--- /dev/null
+++ b/bundleplugin/doc/site/index.html
@@ -0,0 +1,244 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Generated by Apache Maven Doxia at Jul 5, 2011 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+  <head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+
+    <title>Maven Bundle Plugin - Introduction</title>
+
+    <style type="text/css" media="all">
+
+      @import url("./css/maven-base.css");
+
+      @import url("./css/maven-theme.css");
+
+      @import url("./css/site.css");
+
+    </style>
+
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+
+      <meta name="author" content="Stuart McCulloch" />
+
+    <meta name="Date-Creation-yyyymmdd" content="20110628" />
+
+    <meta name="Date-Revision-yyyymmdd" content="20110705" />
+
+    <meta http-equiv="Content-Language" content="en" />
+
+        
+
+  </head>
+
+  <body class="composite">
+
+    <div id="banner">
+
+                    <div id="bannerLeft">
+
+                Maven Bundle Plugin
+
+                </div>
+
+                    <div class="clear">
+
+        <hr/>
+
+      </div>
+
+    </div>
+
+    <div id="breadcrumbs">
+
+            
+
+        
+
+                <div class="xleft">
+
+        <span id="publishDate">Last Published: 2011-07-05</span>
+
+                  &nbsp;| <span id="projectVersion">Version: 2.3.5</span>
+
+                      </div>
+
+            <div class="xright">        
+
+        
+
+      </div>
+
+      <div class="clear">
+
+        <hr/>
+
+      </div>
+
+    </div>
+
+    <div id="leftColumn">
+
+      <div id="navcolumn">
+
+             
+
+        
+
+                                <h5>Overview</h5>
+
+                  <ul>
+
+                  <li class="none">
+
+            <strong>Introduction</strong>
+
+          </li>
+
+                  <li class="none">
+
+                          <a href="plugin-info.html" title="Goals">Goals</a>
+
+            </li>
+
+                  <li class="none">
+
+                          <a href="https://cwiki.apache.org/confluence/display/FELIX/Apache+Felix+Maven+Bundle+Plugin+%28BND%29" class="externalLink" title="Wiki">Wiki</a>
+
+            </li>
+
+                  <li class="none">
+
+                          <a href="https://cwiki.apache.org/confluence/display/FELIX/Apache+Felix+Bundle+Plugin+FAQ" class="externalLink" title="FAQ">FAQ</a>
+
+            </li>
+
+                  <li class="none">
+
+                          <a href="jira-report.html" title="Release Notes">Release Notes</a>
+
+            </li>
+
+          </ul>
+
+                       <h5>Project Documentation</h5>
+
+                  <ul>
+
+                                                                                                                                                                                          <li class="expanded">
+
+                          <a href="project-info.html" title="Project Information">Project Information</a>
+
+                    <ul>
+
+                      <li class="none">
+
+            <strong>About</strong>
+
+          </li>
+
+                      <li class="none">
+
+                          <a href="dependencies.html" title="Dependencies">Dependencies</a>
+
+            </li>
+
+                      <li class="none">
+
+                          <a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+
+            </li>
+
+                      <li class="none">
+
+                          <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+
+            </li>
+
+                      <li class="none">
+
+                          <a href="license.html" title="Project License">Project License</a>
+
+            </li>
+
+                      <li class="none">
+
+                          <a href="team-list.html" title="Project Team">Project Team</a>
+
+            </li>
+
+                      <li class="none">
+
+                          <a href="source-repository.html" title="Source Repository">Source Repository</a>
+
+            </li>
+
+              </ul>
+
+        </li>
+
+                                                                                                                                            <li class="collapsed">
+
+                          <a href="project-reports.html" title="Project Reports">Project Reports</a>
+
+                  </li>
+
+          </ul>
+
+                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+
+        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+
+      </a>
+
+                   
+
+        
+
+            </div>
+
+    </div>
+
+    <div id="bodyColumn">
+
+      <div id="contentBox">
+
+        <!-- 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. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/doxia/references/apt-format.html --><div class="section"><h2>Maven Bundle Plugin<a name="Maven_Bundle_Plugin"></a></h2><p>This Maven 2 plugin is based on the <a class="externalLink" href="http://www.aqute.biz/Bnd/Bnd/">BND</a> tool from Peter Kriens. The way BND works is by treating your project as a big collection of classes (e.g., project code, dependencies, and the class path). The way you create a bundle with BND is to tell it the content of the bundle's JAR file as a subset of the available classes. This plugin wraps BND to make it work specifically with the Maven 2 project structure and to provide it with reasonable default behavior for Maven 2 projects.</p><div class="section"><h3>Goals Overview<a name="Goals_Overview"></a></h3><p>General Information about the goals.</p><ul><li><a href="./bundle-mojo.html">bundle:bundle</a> Create an OSGi bundle from Maven project. (life-cycle goal)</li><li><a href="./manifest-mojo.html">bundle:manifest</a> Generate an OSGi manifest for this project.</li><li><a href="./cleanVersions-mojo.html">bundle:cleanVersions</a> Convert a group of versions to OSGi format.</li><li><a href="./instructions-mojo.html">bundle:instructions</a> Generate BND instructions for this project.</li><li><a href="./install-mojo.html">bundle:install</a> Installs bundle details in the local OBR repository. (life-cycle goal)</li><li><a href="./deploy-mojo.html">bundle:deploy</a> Deploys bundle details to a remote OBR repository. (life-cycle goal)</li><li><a href="./index-mojo.html">bundle:index</a> Index the content of a maven repository using OBR.</li><li><a href="./install-file-mojo.html">bundle:install-file</a> Installs bundle details in the local OBR repository. (command-line goal)</li><li><a href="./deploy-file-mojo.html">bundle:deploy-file</a> Deploys bundle details to a remote OBR repository. (command-line goal)</li><li><a href="./clean-mojo.html">bundle:clean</a> Clean a local OBR repository by finding and removing missing resources.</li><li><a href="./remote-clean-mojo.html">bundle:remote-clean</a> Clean a remote OBR repository by finding and removing missing resources.</li><li><a href="./ant-mojo.html">bundle:ant</a> Generate Ant script to create the bundle. (you should run ant:ant first)</li></ul></div><div class="section"><h3>Usage<a name="Usage"></a></h3><p>General instructions on how to use the Maven Bundle Plugin can be found on the <a class="externalLink" href="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html">wiki page</a>. Some more specific use cases are described in the examples given below.</p><p>In case you still have questions regarding the plugin's usage, please have a look at the <a class="externalLink" href="http://felix.apache.org/site/apache-felix-bundle-plugin-faq.html">FAQ</a> and feel free to contact the <a class="externalLink" href="http://felix.apache.org/site/mailinglists.html">user mailing list</a>. The posts to the mailing list are archived and could already contain the answer to your question as part of an older thread. Hence, it is also worth browsing/searching the <a class="externalLink" href="http://www.mail-archive.com/users@felix.apache.org/">mail archive</a>.</p><p>If you feel like the plugin is missing a feature or has a defect, you can fill a feature request or bug report in our <a href="./issue-tracking.html">issue tracker</a>. When creating a new issue, please provide a comprehensive description of your concern. Especially for fixing bugs it is crucial that the developers can reproduce your problem. For this reason, entire debug logs, POMs or most preferably little demo projects attached to the issue are very much appreciated. Of course, patches are welcome, too. Contributors can check out the project from our <a href="./source-repository.html">source repository</a> and will find supplementary information in the <a class="externalLink" href="http://felix.apache.org/site/development.html">Apache Felix developers guide</a>. </p></div><div class="section"><h3>Examples<a name="Examples"></a></h3><p>To provide you with better understanding on some usages of the Maven Bundle Plugin, you can take a look into the following examples:</p><ul><li>Examples coming soon!</li></ul></div></div>
+
+      </div>
+
+    </div>
+
+    <div class="clear">
+
+      <hr/>
+
+    </div>
+
+    <div id="footer">
+
+      <div class="xright">Copyright &#169;                    2006-2011
+
+                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+
+            All Rights Reserved.      
+
+        
+
+      </div>
+
+      <div class="clear">
+
+        <hr/>
+
+      </div>
+
+    </div>
+
+  </body>
+
+</html>
+
