Changes from 4.2.0 to 4.2.1
---------------------------

* Bug
    * [FELIX-6106] - Regression after a change in maven-bundle-plugin:4.2.0 related to non-existing files


Changes from 4.1.0 to 4.2.0
---------------------------

* Improvement
    * [FELIX-6073] - Upgrade to Maven 3
    * [FELIX-6074] - Check for stale input and avoid recomputing the manifest if no changes
    * [FELIX-6075] - Upgrade to JDK 8
    * [FELIX-6078] - Add an option to silently ignore some project types instead of displaying a warning
    * [FELIX-6081] - Upgrade bndlib to 4.2.0 in order to properly calculate osgi.ee for embedded dependencies


Changes from 4.0.0 to 4.1.0
---------------------------

** Improvement
    * Prep for bndlib 4.1.0


Changes from 3.5.0 to 4.0.0
---------------------------

** Bug
    * [FELIX-5794] - maven-bundle-plugin fails to parse meta-persistence

** Improvement
    * [FELIX-5920] - Prepare maven-bundle-plugin for release with bndlib 4.0.0


Changes from 3.4.0 to 3.5.0
---------------------------

** Improvement
    * [FELIX-5764] - Update to bnd version 3.5


Changes from 3.3.0 to 3.4.0
---------------------------

** Bug
    * [FELIX-5527] - Bundle plugin Embed-Dependency complains about class files in META-INF
    * [FELIX-5592] - Maven bundle plugin does not support Java 9 Multi-Release jars
    * [FELIX-5712] - Maven Bundle Plugin - Broken and non https links
    * [FELIX-5734] - The plugin generates wrong service requirements when using a jndi name in jpa

** Improvement
    * [FELIX-5760] - Update to bnd version 3.4


Changes from 3.2.0 to 3.3.0
---------------------------

** Bug
    * [FELIX-5579] - Bundle Plugin uses insecure maven-archiver 2.5
    * [FELIX-5582] - maven-bundle-plugin: Make sure Closeable resources are closed

** Improvement
    * [FELIX-5424] - Augment exported service metadata
    * [FELIX-5581] - Update to bndlib 3.3.0


Changes from 3.0.1 to 3.2.0
---------------------------

** Bug
    * [FELIX-5116] - Dump SCR component definitions broken

** Improvement
    * [FELIX-5149] - Update to bndlib 3.1.0
    * [FELIX-5253] - Update to bndlib 3.2.0

** New Feature
    * [FELIX-4009] - maven bundle plugin should be integrated directly with eclipse
    * [FELIX-5233] - New JPA analyser for the maven bundle plugin
    * [FELIX-5258] - Add a new MOJO which verifies the bundle integrity


Changes from 3.0.0 to 3.0.1
---------------------------

** Bug
    * [FELIX-5062] - maven-bundle-plugin includes tests dependencies in package analysis
    * [FELIX-5070] - Simple syntax for specifying embedded dependencies has broken

** Improvement
    * [FELIX-5073] - Option to create dependency-reduced-pom exists


Changes from 2.5.5 to 3.0.0
---------------------------

** Improvement
    * [FELIX-5047] - Disable bnd ScrPlugin by default
    * [FELIX-5030] - Do not require a pom.xml when Polyglot Maven is used
    * [FELIX-5029] - Update to bnd 3.0.0

Especially the update to bnd 3.0.0 brings many fixes and improvements,
including support for OSGi Enterprise R6 DS annotations and Metatype
annotations.

Changes from 2.5.4 to 2.5.5
---------------------------

** Bug
    * [FELIX-4882] - Correctly use Maven Plugin Tools Java 5 annotations instead of javadoc tags
    * [FELIX-4892] NPE in maven-bundle-plugin
    * [FELIX-4874] IllegalArgumentException: Invalid syntax for version: 0.1-SNAPSHOT
    * [FELIX-4956] Embed latest bndlib
    * [FELIX-3565] Embed-Transitive leaks transitive dependencies of excluded artifacts
    * [FELIX-4823] Filtering snapshots is failing if version qualifier contains more than "SNAPSHOT"
    * [FELIX-4691] Empty string value for property causes build failure

** Improvement
    * [FELIX-4809] More flexibility for selecting the comparison artifact
    * [FELIX-3994] Optional merging of duplicate manifest headers
    * [FELIX-3324] Allow maven-bundle-plugin:manifest to dump SCR component definitions generated by bnd


Changes from 2.5.3 to 2.5.4
---------------------------

** Bug
    * [FELIX-4556] - Maven Bundle Plugin fails with ArrayIndexOutOfBoundsException, "Invalid Class File" errors with Java 8 features
    * [FELIX-4659] - The maven bundle plugin incorrectly reports cardinality on service references in the generated generic requirements
    * [FELIX-4817] - Baseline plugin is not thread safe
    * [FELIX-4679] - Import package not generated for the classes used in throw clause in a private method.

** Improvement
    * [FELIX-4666] - The baseline goal should print out the resolved version used for comparison
    * [FELIX-4824] - Add support for prepending instructions


Changes from 2.5.2 to 2.5.3
---------------------------

** Bug
    * [FELIX-4619] - Debug output of project properties


Changes from 2.5.0 to 2.5.2
---------------------------

** Bug
    * [FELIX-4574] - The maven-bundle-plugin only generates Provide-/Require-Capabilities for SCR if version is 1.1.0
    * [FELIX-4576] - Bad Require-Capability generation when the SCR target filter has no parentheses

** Improvement
    * [FELIX-4596] - Passing configuration values to the maven-bundle-plugin

** New Feature
    * [FELIX-4591] - add the ability to specify the classifier in the new baseline configuration of the plugin.


Changes from 2.4.0 to 2.5.0
---------------------------

** Improvement
    * [FELIX-3381] - Support for {maven-test-resources} and {maven-test-sources} placeholders
    * [FELIX-4205] - "null" Bundle-Activator causes bundle to fail
    * [FELIX-4518] - Provide a way to disable some plugins
    * [FELIX-4539] - Update to Bndlib 2.3.0

** New Feature
    * [FELIX-3462] - Nicer Manifest formatting
    * [FELIX-4512] - Add a new Mojo to invoke the BND Baseline tool
    * [FELIX-4517] - Generate generic capabilities and requirements for services from blueprint and scr descriptors

Changes from 2.3.7 to 2.4.0
---------------------------

** Bug
    * [FELIX-3293] - Exception while creating empty fragment bundles with version 2.3.6
    * [FELIX-3349] - wrong bundle manifest contents in some cases
    * [FELIX-3352] - Maven Bundle Plugin ignores resource properties configured inside <filters> section
    * [FELIX-3407] - Imports are missed for generics
    * [FELIX-3497] - Wrong artifact type attached as a secondary artifact when project packaging is set to "pom"
    * [FELIX-3582] - finalName not properly populated in maven-bundle-plugin with buildnumber-maven-plugin
    * [FELIX-3585] - Dependencies with classes or resources in the default package cannot be embedded
    * [FELIX-3601] - Incorrect namespace in component XML for DS Annotations
    * [FELIX-3619] - "IOException: Failed to delete repository.xml while trying to rename" in maven-bundle-plugin
    * [FELIX-3630] - Packages exported by bundle are (re)-imported with incorrect version
    * [FELIX-3638] - Missing package import for annotation default value
    * [FELIX-3772] - maven-bundle-plugin does not scan blueprint in workspace outside default location
    * [FELIX-3973] - Exclusion from {local-packages} doesn't work anymore
    * [FELIX-4005] - Maven Bundle Plugin fails with ArrayIndexOutOfBoundsException, "Invalid Class File" errors with Java 8 features
    * [FELIX-4017] - @ProviderType does not work (bnd "provide:=true" annotation?)

** Improvement
    * [FELIX-3277] - Support BND Service Component generation
    * [FELIX-3602] - The bundle plugin should generate the blueprint header with the file locations

** Wish
    * [FELIX-4067] - Old BND used causes problems during annotations processing

Changes from 2.3.6 to 2.3.7
---------------------------

** Bug
    * [FELIX-3347] - Upper-case environment variables end up in final manifest
    * [FELIX-3310] - [patch] maven-bundle-plugin build fails with maven3 (manageArtifactSystemPath is missing)
    * [FELIX-3254] - manifest goal generates wrong Export-Package when Embed-Dependency

** Improvement
    * [FELIX-3300] - Avoid warning about superfluous export-package instructions for empty directories

** Task
    * [FELIX-3299] - Fix instable tests in BundlePluginTest

Changes from 2.3.5 to 2.3.6
---------------------------

** Bug
    * [FELIX-3031] - maven3 deployment fails where maven2 works
    * [FELIX-3037] - Plugin does not work with Java 5
    * [FELIX-3058] - maven-bundle-plugin 2.3.5 incompatible with maven-source-plugin (regression)
    * [FELIX-3073] - can't deploy snapshot bundle to remote OBR
    * [FELIX-3173] - Local OBR install failes when there is a space in the full path
    * [FELIX-3185] - Negative Embed-Dependency clauses aren't handled correctly
    * [FELIX-3188] - [PATCH] exception org.apache.maven.project.artifact.InvalidDependencyVersionException has already been caught
    * [FELIX-3206] - Restore the BND analyzer approach which creates a MANIFEST.MF based on the contents of the jar
    * [FELIX-3209] - Make sure the properties passed to BND only include string values
    * [FELIX-3222] - [PATCH] build fails with "unreported exception"
    * [FELIX-3238] - Unable to filter out classes from identical package in a dependency

** Improvement
    * [FELIX-2872] - Provide a way to have an easier to read manifest
    * [FELIX-3061] - improvements to Embed-Dependency logic to allow better m2e integration
    * [FELIX-3092] - Support relative paths in "urlTemplate" parameter of "bundle:index" goal in maven bundle plugin

** New Feature
    * [FELIX-3165] - Add an option to the manifest goal that will copy any BND generated resources to the target folder
    * [FELIX-3208] - Provide default value for sourcepath when using BND -sources=true
    * [FELIX-3210] - Maven bundle plugin remote-clean goal without user confirmation

Changes from 2.3.4 to 2.3.5
---------------------------

** Bug
    * [FELIX-1039] - Inconsistency packaging vs. type
    * [FELIX-1571] - Bundle-ClassPath without "." while using maven-bundle-plugin in a war project confuses the plugin
    * [FELIX-1734] - The _donotcopy is ignored
    * [FELIX-1985] - Error when Include-Resource instruction contains duplicate paths.
    * [FELIX-2346] - mvn bundle:clean removes all, even the existing resources
    * [FELIX-2427] - maven site crashes
    * [FELIX-2435] - <supportedProjectType> on a WAR file will switch the project to generate jar artifacts
    * [FELIX-2449] - Resource filtering does not use Maven properties specified on the mvn command line via -D command line switches
    * [FELIX-2656] - Maven-bundle-plugin identified as not thread-safe in Maven 3.0
    * [FELIX-2722] - With an empty  organization like this <organization/>, maven bundle plugin raises a NPE.
    * [FELIX-2765] - bundle plugin throw IllegalArgumentException while do the install
    * [FELIX-2819] - packageinfo files in src/main/java are ignored
    * [FELIX-2820] - Provide a default value when using <_wab/>
    * [FELIX-2884] - The multiplicity isn't taken into account by the maven bundle plugin and bundlerepository when generating the repository xml
    * [FELIX-2914] - Nullpointer exception on mvn install if the pom contains organization/url but not organization/name
    * [FELIX-2934] - Bundle-ClassPath contains "." despite using _wab instruction

** Improvement
    * [FELIX-1836] - Maven resource filtering support for obr.xml

** New Feature
    * [FELIX-3011] - Add a new goal to save the bnd instructions that would be passed onto bnd, to allow people to use other toolchains such as bndtools

** Task
    * [FELIX-344] - Generate standard maven documentation for the maven-bundle-plugin

Changes from 2.2.0 to 2.3.4
---------------------------

 * [2011-02-01] FELIX-2817: The maven-bundle-plugin manifest goal should honor the supportedProjectTypes configuration setting.
 * [2011-01-27] FELIX-2808: maven-bundle-plugin should scan for local packages by looking for *.class files instead of *.java so that all the JVM languages can be supported.
 * [2011-01-27] FELIX-2809: maven-bundle-plugin should automatically add "resolution:=optional" to imported packages that are in optional maven dependencies.
 * [2011-01-29] FELIX-2811: If <Private-Package>!*</Private-Package> is defined the all packages should be exported by {local-packages}
 * [2011-01-29] FELIX-2812: The <Embed-Dependency> filter can fail if your matching against multiple "*" artifact ids.

Changes from 2.1.0 to 2.2.0
---------------------------

 * [2010-11-17] FELIX-2701: Add {local-packages} macro, expands to local packages in <Export-Package> instruction
 * [2010-10-25] FELIX-2176: Update to latest bndlib (1.15.0)

Changes from 2.0.0 to 2.0.1
---------------------------

 * [2009-09-03] FELIX-1461: make local repository updates a bit more atomic
 * [2009-09-03] Temporary local bnd patch for Include-Resource bug on Windows
 * [2009-09-03] FELIX-1539: include additional source directories in local package calculation
 * [2009-09-03] FELIX-1439: add project organization name/url properties
 * [2009-09-03] FELIX-1501: use getProperty() instead of getProperties().getProperty()
 * [2009-09-03] FELIX-1552: add bnd support for blueprint and spring-dm declarations
 * [2009-09-03] FELIX-1148: apply local patch for MSHARED-101
 * [2009-09-03] FELIX-981: avoid spurious split package warnings
 * [2009-09-03] FELIX-1290: warn if Embed-Dependency doesn't match any dependencies
 * [2009-09-03] FELIX-1021: remove expression from classifier parameter (ie. same as jar plugin)
 * [2009-09-03] FELIX-1023: apply patch to add category information to OBR
 * [2009-09-03] Upgrade to bndlib 0.0.357
 * [2009-07-13] FELIX-1262: remove duplicate resource entries to avoid Bnd Tool error
 * [2009-04-24] FELIX-1054: when deploying a bundle, print computed uri on the console

Changes from 1.4.3 to 2.0.0
---------------------------

 * [2009-02-16] FELIX-807,FELIX-782,FELIX-660,FELIX-549,FELIX-546,FELIX-545: Use latest version of the Bnd Tool (0.0.311)
 * [2009-02-16] FELIX-941: store the generated default symbolicname in $(maven-symbolicname) property
 * [2009-02-16] FELIX-912: set default Export-Package based on local source files
 * [2009-02-16] FELIX-684: support filters in excludeDependencies, such as *;scope=runtime
 * [2009-02-16] FELIX-684: separate out dependency filtering code so we can re-use it when excluding
 * [2009-01-30] FELIX-806: pickup <archive> settings in bundleplugin configuration (otherwise fall back to the jarplugin settings) and enable support of the addMavenDescriptor setting
 * [2009-01-30] FELIX-850: local fix for MSHARED-86 (should use isFile instead of exists)
 * [2009-01-29] FELIX-899: update to latest editions of Bnd and Bindex
 * [2009-01-29] FELIX-899: first step, widen dependency resolution and pass everything except test dependencies onto BND
 * [2008-12-05] Additional debug to help with problem determination
 * [2008-12-03] FELIX-760: commit latest bindex code
 * [2008-12-03] FELIX-831,FELIX-677: update to version 0.0.295 of the Bnd tool
 * [2008-08-27] FELIX-699: set analyzer base before loading properties in manifest goal


Changes from 1.4.2 to 1.4.3
---------------------------

 * [2008-08-07] FELIX-661: maven bundle plugin does not close the accessed zip/jar streams

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)

