<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 MOSGi JMX MBean for OSGi bundles management</name>
  <artifactId>org.apache.felix.mosgi.managedelements.bundlesprobes</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>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.apache.felix.mosgi.console.ifc</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.apache.felix.framework</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>MOSGi JMX MBean for OSGi bundles management</bundleName>
            <bundleDescription>MOSGi JMX MBean for OSGi bundles management</bundleDescription>
            <bundleActivator>auto-detect</bundleActivator>
            <bundleDocUrl>http://oscar-osgi.sf.net/obr2/${pom.artifactId}/</bundleDocUrl>
            <bundleUrl>http://oscar-osgi.sf.net/obr2/${pom.artifactId}/${pom.artifactId}-${pom.version}.jar</bundleUrl>
            <bundleSource>http://oscar-osgi.sf.net/obr2/${pom.artifactId}/${pom.artifactId}-${pom.version}-src.jar</bundleSource>
            <bundleSymbolicName>${pom.artifactId}</bundleSymbolicName>
            <exportPackage>
	      ${pom.artifactId};specification-version="1.0.0"
            </exportPackage>
            <importPackage>
              org.osgi.framework;specification-version="1.0.0",
              org.osgi.service.log;specification-version="1.0.0",
              javax.management;specification-version="1.0.0",
              org.apache.felix.mosgi.console.ifc;specification-version="1.0.0"
            </importPackage>
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
