Changes from 1.4.1 to 1.4.2
---------------------------

 * [2008-08-03] FELIX-553: allow cleaning a remote OBR
 * [2008-08-03] FELIX-580: Allows maven-bunde-plugin to generate a repository file outide a maven repository with absolute url
 * [2008-07-09] FELIX-556: Filtering mechanims to <Embed-Dependency/>
 * [2008-07-08] FELIX-547: OBR portion of the plugin balks on singular version range of [1.0.0,1.0.0].
 * [2008-07-07] FELIX-620: manifest goal of maven-bundle-plugin ignores _include instruction
 * [2008-05-16] FELIX-560: bundle:install and bundle:deploy goals check artifact type is "bundle" instead of using the supportedProjectTypes list
 * [2008-05-16] FELIX-561: Use same level of Bnd in script generated by bundle:ant as in the bundleplugin itself

Changes from 1.4.0 to 1.4.1
---------------------------

 * [2008-04-30] FELIX-543: add switch to prevent classifier being appended to Bundle-Version
 * [2008-04-23] FELIX-541: allow repository.xml to reference to xsl file
 * [2008-04-23] FELIX-531: Allow the import package scope to be set for the bundleall goal in the maven-bundle-plugin
 * [2008-04-23] FELIX-523: Update bundleplugin to use BND 0.0.255
 * [2008-04-01] FELIX-526: Allow a mechanism to give preference to local resources over the ones from embedded jars
 * [2008-03-24] FELIX-519: maven-bundle-plugin should issue a WARNING for unsupported packaging types
 * [2008-03-16] FELIX-517: Replacement of {maven-dependencies} in Include-Resource and Bundle-ClassPath can strip Windows path separators
 * [2008-03-03] FELIX-505: maven-bundle-plugin:bundleall modifies dependencies that are already bundles

Changes from 1.2.1 to 1.4.0
---------------------------

 * [2008-02-20] FELIX-499: Enhance "excludeDependencies" configuration parameter to also support comma-separated list of artifactIds
 * [2008-02-20] FELIX-498: Enable javadoc deployment on OBR repository
 * [2008-02-19] FELIX-497: Genearated Source url is not a valid url
 * [2008-02-19] FELIX-493: maven-bundle-plugin bundle:install goal install too many artifact
 * [2008-02-19] FELIX-247: Add ant goal to maven-bundle-plugin which creates a build.xml and MANIFEST.MF with bundle headers
 * [2008-02-18] FELIX-492: Add support to classifier: enable bunlde:bundle goal to generate classified artifact
 * [2008-02-18] FELIX-491: Merge the maven-obr-plugin and the bundleplugin into a single plugin

Changes from 1.2.0 to 1.2.1
---------------------------

 * [2008-02-12] FELIX-477: BND: Versions with fourth section all numbers are truncated
 * [2008-02-06] FELIX-479: add supportedProjectTypes configuration option to install goal
 * [2008-02-02] FELIX-459: BND: allow customization of the "uses" clause in the generated Export-Package
 * [2008-01-30] FELIX-476: Improve default Export-Package (used when no Export-Package and Private-Package is set)
 * [2008-01-30] FELIX-462: Support removal of manifest headers added by the bundleplugin
 * [2008-01-30] FELIX-461: Ensure manifest goal creates same manifest as bundle goal when project packaging is "bundle"
 * [2008-01-29] FELIX-472: Embed-Dependency, Include-Resource and inline
 * [2008-01-29] FELIX-460: Remove "." from the Bundle-ClassPath when embedding dependencies in a bundle with no local classes
 * [2008-01-28] FELIX-457: remove PathFile class and use URIs instead
 * [2008-01-22] FELIX-458: BND: -split-package:=merge-first behaves like merge-last

Changes from 1.0.0 to 1.2.0
---------------------------

 * [2008-01-11] FELIX-455: need to use the Builder class instead of Analyzer, because it provides additional cleanup of version information
 * [2008-01-10] FELIX-451: remove Include-Resource header from final bundle manifest
 * [2008-01-10] FELIX-449: add 'excludeDependencies' option (disabled by default) to exclude all dependencies from the classpath passed to BND
 * [2008-01-09] FELIX-442: handle custom manifest sections and external manifest files
 * [2008-01-08] Update to bndlib 0.0.227 (disables spring xml parser by default)
 * [2007-12-27] FELIX-442: Add manifest entries from maven-jar-plugin configuration to final bundle
 * [2007-12-07] FELIX-433: add unpackBundle option that unpacks the bundle contents to the Maven output directory
 * [2007-11-18] FELIX-400: add resource code to properly handle Maven includes/excludes
 * [2007-11-01] Make Embed-StripGroup default to true, as it is much more useful than the current default
 * [2007-10-31] FELIX-417: fix project references
 * [2007-10-26] Better error messages (and detect difference between internal error and configuration error)
 * [2007-10-23] FELIX 406: fix Windows path entries in Bundle-ClassPath when embedding jars
 * [2007-10-22] FELIX-405: support custom obr repository filenames, such as foo.xml
 * [2007-10-21] FELIX-403: replace line-breaks with spaces when using Maven project description in Bundle manifest
 * [2007-10-19] FELIX-402: use correct manifest location when using reactor build
 * [2007-10-19] FELIX-400: fix array out of bounds exception when the resource directory is the same as the basedir
 * [2007-09-25] FELIX-360: various fixes to the bundleall goal
 * [2007-09-22] FELIX-370: OBR integration work
 * [2007-09-22] FELIX-306: be consistent and delegate all version mangling to BND library
 * [2007-09-21] FELIX-377: support -failok directive
 * [2007-09-21] FELIX-376: Support writing of manifest to the file system when using bundle goal
 * [2007-09-11] FELIX-352: provide informational error message when manifest goal is run before compile phase
 * [2007-08-26] FELIX-308: support embedding of artifacts with non-jar extension names
 * [2007-08-24] Workaround for MNG-1682 (incorrect extension used when installing to local repository)
 * [2007-08-23] FELIX-343: replace any instances of {maven-resources} in Include-Resource with the actual project's resource paths
 * [2007-08-23] FELIX-308: initial implementation to support embedding dependencies
 * [2007-08-22] FELIX-340: update classpath algorithm to match maven compilation classpath
 * [2007-08-14] FELIX-333: remove new-lines/form-feeds from property values.

Changes from 0.8.0-incubator to 1.0.0
-------------------------------------

* [2007-03-13] <Include-Resources> now supports JAR files in the class path,
  not just JAR files in the project directory.
* [2007-03-15] Fixed a bug in converting Maven version numbers to OSGi version
  numbers. (FELIX-256)
* [2007-03-28] Added support for using BND directives in the POM file.
  (FELIX-218)
* [2007-04-10] Added a recursive "bundleall" goal to generate OSGi bundles for
  all dependencies and a "manifest" goal to generate just the manifest.
  (FELIX-199)
* [2007-04-27] Modified the plugin so that it does not run on POM projects.
  (FELIX-269)
* [2007-05-17] Plugin now handles null property values better. (FELIX-281)
* [2007-05-20] Renamed project directory from maven-bundle-plugin to
  bundleplugin.
* [2007-05-20] Changed package naming.
* [2007-05-21] Improved handling of resource copying to copy the plugin's
  resources if specified or the standard Maven-specified resources. (FELIX-261)
* [2007-06-13] Factored out some common code. (FELIX-304)
* [2007-06-14] Enable output folder to be configured. (FELIX-305)
* [2007-07-05] Added support for overriding project type. (FELIX-309)
* [2007-07-09] Updated to BND version 0.0.160.
* [2007-07-11] Fix a possible NullPointerException in the manifest goal. (FELIX-326)

