<project>

  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>0.9.0-incubator-SNAPSHOT</version>
  </parent>
  
  <modelVersion>4.0.0</modelVersion>
  <packaging>osgi-bundle</packaging>
  <name>Apache Felix MOSGi JMX Console GUI component</name>
  <artifactId>org.apache.felix.mosgi.console.component</artifactId>
  <version>0.9.0-incubator-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.apache.felix.mosgi.console.ifc</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix.plugins</groupId>
        <artifactId>maven-osgi-plugin</artifactId>
        <!--version>${felix.version}</version-->
        <extensions>true</extensions>
        <configuration>
          <osgiManifest>
	    <!--bundleManifestVersion>2</bundleManifestVersion-->
	    <!--bundleClassPath></bundleClassPath-->
            <bundleName>MOSGi JMX Console main GUI component</bundleName>
	    <!--bundleVersion>
	      Default value is {pom.version}.
	      For exemple : 0.9.3-SNAPSHOT -> Bundle-Version=0.9.3.SNAPSHOT
	      But if we specify a ${*} value with extension "-SNAPSHOT" or a value with char '-'
	      it will be misunderstood
	    </bundleVersion-->
            <bundleDescription>MOSGi JMX Console main GUI component</bundleDescription>
	    <!--bundleVendor>Stephane FRENOT</bundleVendor-->
	    <!--bundleDate></bundleDate-->
	    <!--bundleUpdateLocation>
	      This value doesn't resolve "null" messages (when we update a bundle)...
	    <bundleUpdateLocation-->
	    <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>
	    <!--bundleCategory></bundleCategory-->
            <bundleSymbolicName>${pom.artifactId}</bundleSymbolicName>
	    <!--exportPackage></exportPackage-->
	    <importPackage>
	      org.apache.felix.mosgi.console.ifc;specification-version="1.0.0",
	      javax.management;specification-version="1.0.0",
	      javax.swing;specification-version="1.0.0",
	      javax.swing.table;specification-version="1.0.0",
	      org.osgi.framework;specification-version="1.0.0",
	      javax.swing.tree;specification-version="1.0.0"
	    </importPackage>
	    <!--dynamicImportPackage></dynamicImportPackage-->
	    <!--metadataLocation></metadataLocation-->
	    <!--bundleCopyright></bundleCopyright-->
	    <!--bundleNativeCode></bundleNativeCode-->
	    <!--bundleContactAdress></bundleContactAdress-->
	    <!--bundleRequiredExecutionEnvironment></bundleRequiredExecutionEnvironment-->
	    <!--bundleLocalization></bundleLocalization-->
	    <!--requireBundle></requireBundle-->
	    <!--fragmentHost></fragmentHost-->
	    <!--serviceComponent></serviceComponent-->
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
