Changes from 1.1.4 to 1.2.0
---------------------------

** Task
    * [FELIX-3225] - Drop javadoc annotation support
    * [FELIX-3552] - Implement new features of DS 1.2
    * [FELIX-3550] - Reimplement the SCR Generator

** Bug
    * [FELIX-3571] - "Comparison method violates general contract!" error in maven-scr-plugin

** Improvement
    * [FELIX-2689] - Upgrade Descriptor generator to new parent POM and adapt legal files


Changes from 1.1.2 to 1.1.4
---------------------------

** Bug
    * [FELIX-2963] - scr annotations @Activate @Deactivate @Modified are not detected with class inheritance
    * [FELIX-3117] - NullPointerException when not implementing interface that is defined with @Service
    * [FELIX-3136] - Endless loop: JavaClassDescriptorManager.getJavaClassDescription()
    * [FELIX-3113] - NPE in multi-module Maven project
    

Changes from 1.1.0 to 1.1.2
---------------------------

** Bug
    * [FELIX-2963] - scr annotations @Activate @Deactivate @Modified are not detected with class inheritance
    * [FELIX-2978] - Lookup reference policy does not work for inherited components
    * [FELIX-2945] - SCR plugin: Parsing of "options" for property tag broken for java annotations
    * [FELIX-2906] - @Property(cardinality=Integer.MAX_Int, ...) causes java.lang.NumberFormatException
    * [FELIX-2878] - scr- and bundle-plugin in multimodule project fails with goal "test"


** Improvement
    * [FELIX-2492] - scr plugin: using src annotations causes NoClassDefFoundError and other errors
    * [FELIX-2939] - Maven SCR Plugin is not (marked as) thread-safe for parallel builds
    * [FELIX-2908] - Use same mechanism to get single annotation values as for multiple annotation values


Changes from 1.0.0 to 1.1.0
---------------------------

** Bug
    * [FELIX-2704] - @Property(cardinality=Integer.MAX_Int, ...) causes java.lang.NumberFormatException
    * [FELIX-2835] - SCR plugin: Parsing of "options" for property tag broken for javadoc annotations
    * [FELIX-2731] - NPE while scanning sources with QDox
    * [FELIX-2876] - <reference> element not generated when name is missing

** Improvement
    * [FELIX-2853] - Deprecate javadoc tags
    * [FELIX-2753] - Support array of classes for @Service annotation
    * [FELIX-2863] - Warnings and error messages contain @scr.* if annotations are used
    * [FELIX-2690] - Add changelog.txt to SCR/Metatype generation modules


