Changes from 1.12.0 to 1.11.0
-----------------------------
** Improvement
    * [FELIX-4033] - Issue warning messages for redundant SCR annotation combinations and an error for declaring the service.id property
    * [FELIX-4035] - Issue warning messages when metatype is be created, but no properties are defined
** Bug
    * [FELIX-4030] - Generated metatype file contains all metatype infos
    * [FELIX-4023] - SCR-Plugin not working reliably in m2e 1.3.1 
    * [FELIX-3542] - Escape property values used as Metatype default values


Changes from 1.11.0 to 1.10.0
----------------------------
** Improvement
    * [FELIX-3943] - Maven Plugin should require latest SCR annotations 
** Task
    * [FELIX-3942] - IT Tests should use newer version of annotations 
** Bug
    * [FELIX-3917] - bind/unbind methods are not generated
    * [FELIX-3941] - Dependency to annotations should not be in the plugin

 
Changes from 1.10.0 to 1.9.0
----------------------------
** Improvement
    * [FELIX-3794] - Use DS specification version per component
    * [FELIX-3636] - Using @Service without @Component should log a warning
    * [FELIX-2929] - Read @Property from interfaces of types annotated with @Component
    * [FELIX-3169] - Add support for new PASSWORD attribute type of Metatype service
    * [FELIX-3886] - Improve error message for empty *.java-File

** Task
    * [FELIX-3867] - Drop support for JDK 1.4 completely

** Bug
    * [FELIX-3815] - Maven SCR Plugin does not correctly set specVersion to 1.1 if bind method with two parameters are used (OSGi Comp 4.2 $112.3.1)
    * [FELIX-3858] - Service descriptor written in wrong encoding
    * [FELIX-3232] - SCR annotations @Activate @Deactivate @Modified in outer classes also affect nested classes, annotations in nested classes are ignored 


Changes from 1.9.0 to 1.8.0
---------------------------
** Improvement
    * [FELIX-3358] - Enhance the maven-scr-plugin to be compatible with recent Maven/Eclipse integrations
    * [FELIX-3642] - Change default for generating descriptor files to generate single file for each component
    * [FELIX-3641] - Option to generate separate descriptor files
    * [FELIX-3643] - Use BuildContext for scanning changed files
    * [FELIX-3640] - Ignore maven-scr-plugin executions in Eclipse
    * [FELIX-2892] - Get SCR annotations to work with Scala

** Bug
    * [FELIX-3788] - specVersion incorrectly determined, depends on class order
    * [FELIX-3568] - java.lang.VerifyError from bundles compiled with maven-scr-plugin (java 7)
    * [FELIX-3739] - scr-plugin: "Annotated method {0} not found"
    * [FELIX-3793] - Property of type Character must use unicode value
    * [FELIX-3653] - Define the "@Reference" annotation on class level without a "referenceInterface" parameter.

    
Changes from 1.7.4 to 1.8.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
    * [FELIX-3555] - Maven SCR Plugin shoudn't attempt to run on modules of type POM
    * [FELIX-3269] - @Property is not properly parsed.
    * [FELIX-3189] - Mixing full-qualified Reference annotations and imported one results in no References exported to seviceComponents.xml
    * [FELIX-3606] - SCR Plugin: build failure on wildcard imports (e.g. java.util.*)
    * [FELIX-3234] - @Property annotation raises exceptions on longValue=0L use 

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


Changes from 1.7.2 to 1.7.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-3070} - SCR Plugin and dependencies with classifier cause issue depending on the order of dependency in pom.xml
    * [FELIX-3136] - Endless loop: JavaClassDescriptorManager.getJavaClassDescription()
    * [FELIX-3113] - NPE in multi-module Maven project


** Improvement
    * [FELIX-3066] - Add support for source directory include filter via plugin configuration


Changes from 1.7.0 to 1.7.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-2939] - Maven SCR Plugin is not (marked as) thread-safe for parallel builds
    * [FELIX-2492] - scr plugin: using src annotations causes NoClassDefFoundError and other errors
    * [FELIX-2908] - Use same mechanism to get single annotation values as for multiple annotation values


Changes from 1.6.0 to 1.7.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-2777] - MavenJavaClassDescriptorManager ignores dependencies with system scope
    * [FELIX-2770] - maven-scr-plugin 1.6.0 incompatible with <packaging>pom</packaging> projects
    * [FELIX-2731] - NPE while scanning sources with QDox
    * [FELIX-2681] - NPE in assertMinScrAnnotationArtifactVersion when checking min. version of annotations dependency
    * [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-2874] - Add new scopes to SlingFilter annotation and use new property names
    * [FELIX-2838] - Allow classes to be specifed as values for the @Property annotation
    * [FELIX-2863] - Warnings and error messages contain @scr.* if annotations are used
    * [FELIX-2690] - Add changelog.txt to SCR/Metatype generation modules


