<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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/maven-v4_0_0.xsd">

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>17</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.qpid</groupId>
  <artifactId>dispatch-hawtio-console</artifactId>
  <version>1.9.0</version>
  <packaging>war</packaging>
  <inceptionYear>2018</inceptionYear>
  <url>https://qpid.apache.org</url>

  <description>
    Qpid Dispatch hawtio console plugin
  </description>

  <issueManagement>
    <url>https://issues.apache.org/jira/browse/DISPATCH</url>
    <system>JIRA</system>
  </issueManagement>

  <scm>
    <connection>scm:git:http://gitbox.apache.org/repos/asf/qpid-dispatch.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/qpid-dispatch.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git</url>
  </scm>

  <prerequisites>
    <maven>3.0.4</maven>
  </prerequisites>

  <properties>
    <!-- filtered plugin properties, we don't define plugin-scripts here
      as we build that dynamically using maven-antrun-plugin below. -->
    <!-- plugin-context is what context this plugin will handle requests on
      in the application server -->
    <plugin-context>/${project.artifactId}</plugin-context>

    <!-- plugin-name is the name of our plugin, affects the name used for
      the plugin's mbean -->
    <plugin-name>${project.artifactId}</plugin-name>

    <!-- plugin-domain is currently unused, we just define it to an empty
      string -->
    <plugin-domain />

    <!-- dependency versions -->
    <hawtio-version>1.4.60</hawtio-version>
    <geronimo-servlet-2-5-spec-version>1.2</geronimo-servlet-2-5-spec-version>
    <slf4j-version>1.7.13</slf4j-version>

    <!-- plugin versions -->
    <maven-antrun-plugin-version>1.7</maven-antrun-plugin-version>
    <maven-bundle-plugin-version>2.3.7</maven-bundle-plugin-version>

    <buildDirectory>${project.basedir}/target</buildDirectory>
    <webapp-dir>${project.artifactId}-${project.version}</webapp-dir>
    <webapp-outdir>${buildDirectory}/${webapp-dir}</webapp-outdir>

    <!-- this lets this plugin deploy nicely into karaf, these get used
      for the ImportPackage directive for maven-bundle-plugin -->
    <dispatch.osgi.import>
      javax.servlet,
      *;resolution:=optional
    </dispatch.osgi.import>

    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>

    <!-- we only need to embed this dependency in the war, this contains
      a nice helper class that our plugin can use to export it's plugin
      mbean -->
    <dependency>
      <groupId>io.hawt</groupId>
      <artifactId>hawtio-plugin-mbean</artifactId>
      <version>${hawtio-version}</version>
    </dependency>

    <!-- logging -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j-version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j-version}</version>
    </dependency>

    <!-- servlet API is provided by the container -->
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-servlet_2.5_spec</artifactId>
      <version>${geronimo-servlet-2-5-spec-version}</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>

  <build>

    <directory>${buildDirectory}</directory>
    <!-- we want to ensure src/main/resources/WEB-INF/web.xml is being filtered
      so that it picks up all of our javascript files -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>

    <plugins>

      <!-- We use maven-antrun-plugin to build up a list of
           javascript files for our plugin mbean, this means
           it needs to run before the maven-resources-plugin
           copies and filters the web.xml, since for this
           example we use contextParam settings to configure
           our plugin mbean -->

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>${maven-antrun-plugin-version}</version>
        <executions>

          <execution>
            <!-- we run this early in the build process before
              maven-resources-plugin is run.  We're exporting the
              plugin-scripts property from here, so we need to
              use maven-antrun-plugin 1.6 or up -->
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <echo>Building plugin javascript file list</echo>
                <!-- javascript-files will contain all of the javascript in
                  our project -->
                <fileset id="javascript-files" dir="${basedir}/src/main/webapp">
                  <include name="**/*.js" />
                </fileset>
                <!-- we need to strip out the top level path which is
                   our source directory and be sure to change the directory
                   separators to forward slashes -->
                <pathconvert pathsep="," dirsep="/" property="plugin-scripts" refid="javascript-files">
                  <map from="${basedir}/src/main/webapp/" to="" />
                </pathconvert>
                <echo>Files: ${plugin-scripts}</echo>

                <echo>Copying log4j.properties</echo>
                <copy file="src/main/resources/log4j.properties" todir="${buildDirectory}/classes" />

              </target>
              <!-- this exports plugin-scripts to the maven build, without
                this line ${plugin-scripts} in the web.xml file won't be
                replaced -->
              <exportAntProperties>true</exportAntProperties>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <!-- defining this maven plugin in the same phase as the
              maven-antrun-plugin but *after* we've configured the
              maven-antrun-plugin ensures we filter resources *after*
              we've discovered the plugin .js files. -->
            <id>copy-resources</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>resources</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- maven-bundle-plugin config, needed to make this war
        deployable in karaf, defines the context that this bundle
        should handle requests on -->
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>${maven-bundle-plugin-version}</version>
        <executions>
          <execution>
            <id>bundle-manifest</id>
            <phase>process-classes</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <manifestLocation>${webapp-outdir}/META-INF</manifestLocation>
          <supportedProjectTypes>
            <supportedProjectType>jar</supportedProjectType>
            <supportedProjectType>bundle</supportedProjectType>
            <supportedProjectType>war</supportedProjectType>
          </supportedProjectTypes>
          <instructions>
            <Webapp-Context>${plugin-context}</Webapp-Context>
            <Web-ContextPath>${plugin-context}</Web-ContextPath>

            <Embed-Directory>WEB-INF/lib</Embed-Directory>
            <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
            <Embed-Transitive>true</Embed-Transitive>

            <Export-Package>${dispatch.osgi.export}</Export-Package>
            <Import-Package>${dispatch.osgi.import}</Import-Package>
            <DynamicImport-Package>${dispatch.osgi.dynamic}</DynamicImport-Package>
            <Private-Package>${dispatch.osgi.private.pkg}</Private-Package>

            <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>

            <Bundle-Name>${project.description}</Bundle-Name>
            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
            <Implementation-Title>HawtIO</Implementation-Title>
            <Implementation-Version>${project.version}</Implementation-Version>
          </instructions>
        </configuration>
      </plugin>

      <!-- We define the maven-war-plugin here and make sure it uses
        the manifest file generated by the maven-bundle-plugin.  We
        also ensure it picks up our filtered web.xml and not the one
        in src/main/resources -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <outputFileNameMapping>@{artifactId}@-@{baseVersion}@@{dashClassifier?}@.@{extension}@</outputFileNameMapping>
          <packagingExcludes>**/classes/OSGI-INF/**</packagingExcludes>
          <failOnMissingWebXml>false</failOnMissingWebXml>
          <archive>
            <manifestFile>${webapp-outdir}/META-INF/MANIFEST.MF</manifestFile>
          </archive>
          <webResources>
            <resource>
              <filtering>true</filtering>
              <directory>src/main/resources</directory>
              <includes>
                <include>**/*.*</include>
              </includes>
            </resource>
            <webResource>
              <targetPath>META-INF</targetPath>
              <directory>${basedir}/src/main/assembly/META-INF</directory>
            </webResource>
          </webResources>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <!-- Profile to override the parent pom profile of the same name to
         stop creation of a source-release.zip file here, as the overall
         dispatch source release was generated separately already. -->
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <skipAssembly>true</skipAssembly>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
