Changes from 1.7.2 to 1.8.0
---------------------------
** Bug
    * [FELIX-5700] - Metatype generation wrongly puts properties files into metatype directory


Changes from 1.7.2 to 1.7.0
---------------------------
** Bug
    * [FELIX-5466] - Adding Target Source URL may lead to NPE


Changes from 1.7.0 to 1.6.0
---------------------------
** Bug
    * [FELIX-5451] - Input/Output streams not properly closed in org.apache.felix.scr.generator
    * [FELIX-5452] - SCR bnd plugin fails when embedding jars with optional/excluded dependencies
    * [FELIX-5419] - SCR Bnd Plugin does not work with bnd-maven-plugin: org.apache.felix.scrplugin.SCRDescriptorException: Unable to load compiled class


Changes from 1.6.0 to 1.5.0
---------------------------
** Improvement
    * [FELIX-5373] - Improve failure message when enabling metatype and using no or private properties only
** Bug
    * [FELIX-5304] - SERVICE_PID property should not be created
    * [FELIX-5328] - NoClassDefFound not wrapped in the ClassScanner
    * [FELIX-5345] - Incorrect encoding in metatype props file


Changes from 1.5.0 to 1.4.0
---------------------------
** Improvement
	* [FELIX-5108] - scr bnd plugin: Add option to suppress writing log to filesystem
** Bug
    * [FELIX-5074] - Using org.apache.felix.scr.bnd together with maven-bundle-plugin leads to using the wrong bnd version


Changes from 1.4.0 to 1.3.0
---------------------------
** Improvement
    * [FELIX-4773] - Generated service component xml does not conform to XSD
** Bug
    * [FELIX-4836] - Bnd Scrplugin is called twice by BndTools
    * [FELIX-4861] - Metatype generation should fail if there is no configuration property
    * [FELIX-4622] - Regression: SCR spec version detection incorrect for activate method
    * [FELIX-4774] - Support for @Reference annotation with unbind method "-"


Changes from 1.3.0 to 1.1.0
---------------------------
** Improvement
    * [FELIX-4586] - A field must be volatile if methods are generated for a dynamic reference
** Bug
    * [FELIX-4567] - scr bnd plugin incompatible with maven-bundle-plugin 2.5.0
    * [FELIX-4296] - Cannot deactivate service interface detection in DS annotations
    * [FELIX-4587] - Update method is not verified


Changes from 1.1.0 to 1.0.0
----------------------------
** Improvement
    * [FELIX-4461] - Update to ASM 5 for Java 8 compatibility




