<project>
  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>1.1.0-SNAPSHOT</version>
    <relativePath>../../pom/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>bundle</packaging>
  <name>Apache Felix EventAdmin</name>
  <description>
	This bundle provides an implementation of the OSGi R4 EventAdmin service.
  </description>
  <version>0.9.0-SNAPSHOT</version>
  <artifactId>org.apache.felix.eventadmin</artifactId>
  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.compendium</artifactId>
      <version>0.9.0-SNAPSHOT</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>1.1.0-SNAPSHOT</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>
              ${pom.artifactId} 
	    </Bundle-SymbolicName>
  	    <Bundle-Activator>
              ${pom.artifactId}.impl.Activator
            </Bundle-Activator>
            <DynamicImport-Package>
              org.osgi.service.log
            </DynamicImport-Package>
            <Import-Package>!org.osgi.service.log,*</Import-Package>
            <Export-Package>org.osgi.service.event</Export-Package>
            <Private-Package>org.apache.felix.eventadmin.impl.*</Private-Package>
            <Import-Service>
            	 org.osgi.service.event.EventHandler, org.osgi.service.log.LogService, org.osgi.service.log.LogReaderService
            </Import-Service>
            <Export-Service>
            	 org.osgi.service.event.EventAdmin
            </Export-Service>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
