<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2009-2013 Roland Huss
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~       http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<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>

  <artifactId>jolokia-agent-osgi</artifactId>
  <version>2.3.0</version>
  <packaging>bundle</packaging>

  <name>jolokia-agent-osgi</name>
  <description>Jolokia :: Agent :: OSGi Bundle</description>

  <parent>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-parent</artifactId>
    <version>2.3.0</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>

  <url>https://jolokia.org/</url>

  <dependencies>

    <!-- Jolokia own artifacts -->

    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-tools-test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-json</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-server-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-server-detector</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-service-serializer</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-service-jmx</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-service-discovery</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-service-history</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-service-jsr160</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-service-notif-pull</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jolokia</groupId>
      <artifactId>jolokia-service-notif-sse</artifactId>
    </dependency>

    <!-- JakartaEE dependencies -->

    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- OSGi dependencies -->

    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>osgi.core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.log</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.servlet</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.cm</artifactId>
      <scope>provided</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>org.jolokia.agent.osgi</Bundle-SymbolicName>
            <Bundle-Description>Jolokia OSGi Agent Bundle</Bundle-Description>
            <Bundle-Activator>org.jolokia.agent.osgi.JolokiaBundleActivator</Bundle-Activator>
            <Import-Package>
              <!-- JDK -->
              javax.crypto,
              javax.crypto.spec,
              javax.management,
              javax.management.openmbean,
              javax.management.relation,
              javax.management.remote,
              javax.naming,
              javax.rmi.ssl,
              javax.security.auth,
              javax.security.auth.callback,
              javax.security.auth.login,
              javax.xml.datatype,
              javax.xml.parsers,
              org.w3c.dom,
              org.xml.sax,
              <!-- Jakarta EE -->
              jakarta.servlet;version="[5.0,7.0)",
              jakarta.servlet.http;version="[5.0,7.0)",
              <!-- OSGi Core -->
              org.osgi.framework;version="[1.8,2)",
              org.osgi.util.tracker;version="[1.5,2)",
              <!-- OSGi ConfigAdmin -->
              org.osgi.service.cm;version="[1.6,2)";resolution:=optional,
              <!-- OSGi Log Service -->
              org.osgi.service.log;version="[1.3,2)";resolution:=optional,
              <!-- OSGi Servlet Whiteboard -->
              org.osgi.service.servlet.context;version="[2.0,3)",
              <!-- Other -->
              com.ibm.websphere.management;resolution:=optional,
              org.eclipse.jetty.server;resolution:=optional,
              org.jboss.mx.util;resolution:=optional,
              org.mortbay.jetty;resolution:=optional
            </Import-Package>
            <Export-Package>
              <!-- jolokia-json -->
              org.jolokia.json,
              org.jolokia.json.parser,
              <!-- jolokia-server-core -->
              org.jolokia.server.core,
              org.jolokia.server.core.auth,
              org.jolokia.server.core.backend,
              org.jolokia.server.core.config,
              org.jolokia.server.core.detector,
              org.jolokia.server.core.http,
              org.jolokia.server.core.http.security,
              org.jolokia.server.core.osgi,
              org.jolokia.server.core.osgi.security,
              org.jolokia.server.core.osgi.util,
              org.jolokia.server.core.request,
              org.jolokia.server.core.request.notification,
              org.jolokia.server.core.restrictor,
              org.jolokia.server.core.restrictor.policy,
              org.jolokia.server.core.service,
              org.jolokia.server.core.service.api,
              org.jolokia.server.core.service.container,
              org.jolokia.server.core.service.notification,
              org.jolokia.server.core.service.request,
              org.jolokia.server.core.service.serializer,
              org.jolokia.server.core.util,
              org.jolokia.server.core.util.jmx,
              org.jolokia.server.core.vm,
              <!-- jolokia-service-discovery -->
              org.jolokia.service.discovery,
              org.jolokia.service.discovery.osgi,
              <!-- jolokia-service-history -->
              org.jolokia.service.history,
              org.jolokia.service.history.osgi,
              <!-- jolokia-service-jmx -->
              org.jolokia.service.jmx,
              org.jolokia.service.jmx.api,
              org.jolokia.service.jmx.handler,
              org.jolokia.service.jmx.handler.list,
              org.jolokia.service.jmx.handler.notification,
              org.jolokia.service.jmx.osgi,
              <!-- jolokia-service-jsr160 -->
              org.jolokia.service.jsr160,
              org.jolokia.service.jsr160.osgi,
              <!-- jolokia-service-notif-pull -->
              org.jolokia.service.notif.pull,
              org.jolokia.service.notif.pull.osgi,
              <!-- jolokia-service-notif-sse -->
              org.jolokia.service.notif.sse,
              org.jolokia.service.notif.sse.osgi,
              <!-- jolokia-service-serializer -->
              org.jolokia.service.serializer,
              org.jolokia.service.serializer.json,
              org.jolokia.service.serializer.json.simplifier,
              org.jolokia.service.serializer.object,
              org.jolokia.service.serializer.osgi
            </Export-Package>
            <Private-Package>
              <!-- jolokia-server-core -->
              org.jolokia.server.core.service.impl,
              <!-- jolokia-server-detector -->
              org.jolokia.server.detector.jee,
              org.jolokia.server.detector.misc,
              org.jolokia.server.detector.osgi,
              <!-- jolokia-agent-osgi -->
              org.jolokia.agent.osgi
            </Private-Package>
            <Include-Resource>
              {maven-resources}, {maven-dependencies},
            </Include-Resource>
            <Embed-Dependency>
              jolokia-json;inline=true,
              jolokia-server-core;inline=true,
              jolokia-server-detector;inline=true,
              jolokia-service-discovery;inline=true|!META-INF/jolokia/services-default,
              jolokia-service-history;inline=true|!META-INF/jolokia/services-default,
              jolokia-service-jmx;inline=true|!META-INF/jolokia/*,
              jolokia-service-jsr160;inline=true|!META-INF/jolokia/services-default,
              jolokia-service-notif-pull;inline=true|!META-INF/jolokia/services-default,
              jolokia-service-notif-sse;inline=true|!META-INF/jolokia/services-default,
              jolokia-service-serializer;inline=true|!META-INF/jolokia/services-default
            </Embed-Dependency>
            <_removeheaders>Embed-Dependency,Include-Resource,Private-Package</_removeheaders>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>dependencies</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <!-- Distribution profile adaption for get also the embedded classes into the sources jar-->
      <id>dist</id>
      <build>
        <plugins>
          <!-- Unpack dependencies in target/sources -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>src-dependencies</id>
                <phase>package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-json</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-server-core</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-server-detector</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-service-discovery</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-service-history</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-service-jmx</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-service-jsr160</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-service-notif-pull</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-service-notif-sse</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.jolokia</groupId>
                      <artifactId>jolokia-service-serializer</artifactId>
                      <classifier>sources</classifier>
                    </artifactItem>
                  </artifactItems>
                  <outputDirectory>${project.build.directory}/sources</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>${plugin.org.codehaus.mojo.build-helper-maven-plugin}</version>
            <executions>
              <execution>
                <id>add-source</id>
                <phase>package</phase>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>${project.build.directory}/sources</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- Has to be mentioned again for the proper calling order of the plugins -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
