<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>servicediagnostics.parent</artifactId>
    <version>0.1.1</version>
    <relativePath>../parent/pom.xml</relativePath>
  </parent>

  <artifactId>org.apache.felix.servicediagnostics.plugin</artifactId>
  <packaging>bundle</packaging>
  <version>0.1.1</version>
  <name>Apache Felix Web Console Service Diagnostics Plugin</name>
  <description>
    This is a plugin for the Apache Felix OSGi web console providing a graphical representation of services and missing required dependencies.
  </description>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/felix/releases/org.apache.felix.servicediagnostics.plugin-0.1.1</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.servicediagnostics.plugin-0.1.1</developerConnection>
    <url>http://svn.apache.org/viewvc/felix/releases/org.apache.felix.servicediagnostics.plugin-0.1.1</url>
  </scm>

  <dependencies>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.webconsole</artifactId>
      <version>3.1.8</version>
    </dependency>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>javax.servlet</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>2.9.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20090211</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-Category>webconsole</Bundle-Category>
            <Bundle-SymbolicName> ${project.artifactId} </Bundle-SymbolicName>
            <Bundle-Activator>
              org.apache.felix.servicediagnostics.impl.Activator
            </Bundle-Activator>
            <Export-Package>
              org.apache.felix.servicediagnostics;version=0.1
            </Export-Package>
            <Import-Package>
              sun.misc*;resolution:=optional, *
            </Import-Package>
            <Private-Package>
              org.apache.felix.servicediagnostics.impl,
              org.apache.felix.servicediagnostics.webconsole
            </Private-Package>
            <Include-Resource>
              {maven-resources}, json-20090211.jar, scala-library-2.9.1.jar
            </Include-Resource>
            <Bundle-ClassPath>
              ., json-20090211.jar, scala-library-2.9.1.jar
            </Bundle-ClassPath>
          </instructions>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <includes>
            <include>src/**</include>
          </includes>
          <excludes>
            <exclude>src/main/appended-resources/**</exclude>
            <exclude>src/main/resources/html/js/jquery-1.7.1.min.js</exclude>
            <exclude>src/main/resources/html/js/raphael-1.3.1.min.js</exclude>
            <exclude>src/main/resources/html/js/graffle-1.3.1.js</exclude>
            <exclude>src/main/resources/html/js/graph.js</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
