<project>
  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>0.9.0-incubator-SNAPSHOT</version>
    <relativePath>../pom/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>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>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>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-Name>Service Binder</Bundle-Name>
            <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
            <Bundle-Vendor>Apache Felix</Bundle-Vendor>
            <!--<Bundle-Version>1.1.2</Bundle-Version>-->
            <Bundle-Description>
              This bundle provides a mechanism to automate service dependency management.
            </Bundle-Description>
            <Bundle-Activator>
              org.apache.felix.servicebinder.impl.Activator
            </Bundle-Activator>
            <Export-Package>
              org.apache.felix.servicebinder; specification-version="1.1.0",org.apache.felix.servicebinder.architecture; specification-version="1.1.0"
            </Export-Package>
            <Private-Package>org.apache.felix.servicebinder.*,org.kxml2.*,org.xmlpull.*</Private-Package>
            <Import-Package>!org.apache.felix.servicebinder.*,*</Import-Package>
            <Metadata-Location>metadata.xml</Metadata-Location>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
