<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 Examples: Spell Check w/ Service Binder</name>
  <artifactId>org.apache.felix.examples.spellcheckbinder</artifactId>
  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.apache.felix.examples.dictionaryservice</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.apache.felix.examples.spellcheckservice</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.ungoverned.gravity.servicebinder</groupId>
      <artifactId>servicebinder</artifactId>
      <version>1.0</version>
      <scope>provided</scope>
    </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>
            <bundleName>Spell Check w/ ServiceBinder Example</bundleName>
            <bundleVendor>Apache Software Foundation</bundleVendor>
            <bundleDescription>
              A bundle that registers a spell checking service based on service binder.
            </bundleDescription>
            <bundleActivator>
              org.apache.felix.examples.spellcheckbinder.Activator
            </bundleActivator>
            <importPackage>
              org.apache.felix.examples.dictionaryservice, org.ungoverned.gravity.servicebinder, org.apache.felix.examples.spellcheckservice
            </importPackage>
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
