Title: blueprint-maven-plugin
Notice:    Licensed to the Apache Software Foundation (ASF) under one
           or more contributor license agreements.  See the NOTICE file
           distributed with this work for additional information
           regarding copyright ownership.  The ASF licenses this file
           to you under the Apache License, Version 2.0 (the
           "License"); you may not use this file except in compliance
           with the License.  You may obtain a copy of the License at
           .
             http://www.apache.org/licenses/LICENSE-2.0
           .
           Unless required by applicable law or agreed to in writing,
           software distributed under the License is distributed on an
           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
           KIND, either express or implied.  See the License for the
           specific language governing permissions and limitations
           under the License.

Writing blueprint xml is quite verbose and large blueprint xmls are difficult to keep in sync with code changes and especially refactorings.
So you would like to do most declarations using annoations and ideally these annotations should be standardized.

## blueprint-maven-plugin ##

The blueprint-maven-plugin allows to configure blueprint using annotations. It scans one or more paths for annotated classes and creates a blueprint.xml in target/generated-resources. So at runtime the bundle behaves like a normal blueprint bundle.
The generated blueprint can also be used together with a manually created blueprint file. So for example property placeholder configurations
or cxf services can be created in xml while most of the beans are automatically generated.

Usage:

    <plugin>
        <groupId>org.apache.aries.blueprint</groupId>
        <artifactId>blueprint-maven-plugin</artifactId>
        <version>1.1.0</version>
        <configuration>
            <scanPaths>
                <scanPath>org.my.package</scanPath>
            </scanPaths>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>blueprint-generate</goal>
                </goals>
                <phase>process-classes</phase>
            </execution>
        </executions>
    </plugin>

## Annotations ##

### javax.inject (JSR 330) ###
  - @Inject Inject a bean by type and optionally further qualifiers
  - @Singleton Mark a class as being a bean
  - @Named("Myname") Names a @Singleton and qualifies an @Inject to limit it to matches with the same bean id

### javax.annotation (JSR 250) ###
  - @PostConstruct Marks a method to be called after DI is finished (init-method)
  - @PreDestroy Marks a method to be called before the bean is destroyed (destroy-method)

### pax-cdi ###
  - @OsgiServiceProvider(classes={TaskService.class}) Publishes a bean as an OSGi service with the given interfaces
  - @OsgiService creates a reference to an OSGi service. On optional filter is also possible
  - @Properties Defines service properties for OSGiServiceProvider
  - @Property Defines a service property

### javax.persistence ###
  - @PersistenceContext(unitName="tasklist") inject a managed EntityManager for the given persistence unit into a field
  - @PersistenceUnit(unitName="tasklist") inject an unmanaged EntityManagerFactory for the given persistence unit into a field

### javax.transaction ###
  - @Transactional mark the class as transactional. Individual methods are not yet supported

## Dependencies for annotations ##

    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.ops4j.pax.cdi</groupId>
        <artifactId>pax-cdi-api</artifactId>
        <version>0.5.0</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>javax.transaction-api</artifactId>
        <version>1.2</version>
    </dependency>

## Example ##

For a complete example see [tasklist-blueprint-cdi][1] on github.


  [1]: https://github.com/cschneider/Karaf-Tutorial/tree/master/tasklist-blueprint-cdi