<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 Log Service</name>
  <artifactId>org.apache.felix.log</artifactId>
  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.compendium</artifactId>
      <version>${pom.version}</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>
            <bundleName>LogService</bundleName>
            <bundleVendor>Apache Software Foundation</bundleVendor>
            <bundleDescription>
              This bundle provides an implementation of the OSGi R4 Log service.
            </bundleDescription>
            <bundleActivator>
              org.apache.felix.log.impl.Activator
            </bundleActivator>
            <importPackage>
              org.osgi.framework, org.osgi.service.log; version=1.3
            </importPackage>
            <exportService>
                 org.osgi.service.log.LogService, org.osgi.service.log.LogReaderService
            </exportService>
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
