<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 OSGi command shell service.</bundleDescription>
            <bundleActivator>${pom.artifactId}.impl.Activator</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>
            <importPackage>org.osgi.framework, org.osgi.service.startlevel, org.osgi.service.packageadmin</importPackage>
            <exportPackage>${pom.artifactId}; specification-version="1.0.0", org.ungoverned.osgi.service.shell; specification-version="1.0.0"</exportPackage>
            <exportService>${pom.artifactId}.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>
