<?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>0.7.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <inceptionYear>2016</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://git-wip-us.apache.org/repos/asf/qpid-dispatch.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git</developerConnection>
    <url>https://git-wip-us.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>/${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>
