<project>
  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>0.8.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>osgi-bundle</packaging>
  <name>Apache Felix Service Binder</name>
  <artifactId>org.apache.felix.servicebinder</artifactId>
  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>kxml2</groupId>
      <artifactId>kxml2</artifactId>
      <version>2.2.2</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix.plugins</groupId>
        <artifactId>maven-osgi-plugin</artifactId>
        <version>${pom.version}</version>
        <extensions>true</extensions>
        <configuration>
          <osgiManifest>
            <entries>
              <property>
                <name>Metadata-Location</name>
                <value>metadata.xml</value>
              </property>
            </entries>
            <bundleSymbolicName>${pom.artifactId}</bundleSymbolicName>
            <bundleName>Service Binder</bundleName>
            <bundleVendor>Apache Software Foundation</bundleVendor>
            <!--<bundleVersion>1.1.2</bundleVersion>-->
            <bundleDescription>
              This bundle provides a mechanism to automate service dependency management.
            </bundleDescription>
            <bundleActivator>
              org.apache.felix.servicebinder.impl.Activator
            </bundleActivator>
            <exportPackage>
              org.apache.felix.servicebinder; specification-version="1.1.0",org.apache.felix.servicebinder.architecture; specification-version="1.1.0"
            </exportPackage>
            <importPackage>
            	 org.osgi.framework
            </importPackage>
            <metadataLocation>
              metadata.xml
            </metadataLocation>
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
