<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 Shell Service</name>
  <artifactId>org.apache.felix.shell</artifactId>
  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.core</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>ShellService</bundleName>
            <bundleDescription>A simple command shell service for Felix (or any other OSGi framework).</bundleDescription>
            <bundleActivator>org.apache.felix.shell.impl.Activator</bundleActivator>
            <bundleDocUrl>http://oscar-osgi.sf.net/obr2/shell/</bundleDocUrl>
            <bundleSource>http://oscar-osgi.sf.net/obr2/shell/org.apache.felix.shell.impl-src.jar</bundleSource>
            <bundleSymbolicName>org.apache.felix.shell.impl</bundleSymbolicName>
            <importPackage>org.osgi.framework, org.osgi.service.startlevel, org.osgi.service.packageadmin</importPackage>
            <exportPackage>org.apache.felix.shell; specification-version="1.0.0", org.ungoverned.osgi.service.shell; specification-version="1.0.0"</exportPackage>
            <exportService>org.apache.felix.shell.ShellService, org.ungoverned.osgi.service.shell.ShellService</exportService>
            <importService>org.osgi.service.startlevel.StartLevel, org.osgi.service.packageadmin.PackageAdmin</importService>
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
