<project>
    <parent>
        <groupId>org.apache.felix</groupId>
        <artifactId>felix</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>bundle</packaging>
    <name>Apache Felix Declarative Services</name>
    <description>
        Implementation of the Declarative Services specification 1.0
    </description>
    <artifactId>org.apache.felix.scr</artifactId>
    <dependencies>
        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>${pom.version}</version>
        </dependency>
        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>org.osgi.compendium</artifactId>
            <version>${pom.version}</version>
        </dependency>
        <dependency>
            <groupId>net.sf.kxml</groupId>
            <artifactId>kxml2</artifactId>
            <version>2.2.2</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
		        <version>0.9.0-incubator-SNAPSHOT</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>
                            ${artifactId}
                        </Bundle-SymbolicName>
                        <Bundle-Vendor>
                            Apache Software Foundation
                        </Bundle-Vendor>
                        <Bundle-Activator>
                            org.apache.felix.scr.Activator
                        </Bundle-Activator>
                        <Export-Package>
                            org.osgi.service.cm, org.osgi.service.component
                        </Export-Package>
                        <Private-Package>
                            org.apache.felix.scr.*, org.kxml2.io,
                            org.osgi.util.tracker,
                            org.xmlpull.v1
                        </Private-Package>
                        <DynamicImport-Package>
                            org.osgi.service.log
                        </DynamicImport-Package>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
