<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>18</version>
  </parent>

  <groupId>org.apache.edgent</groupId>
  <artifactId>edgent-samples</artifactId>
  <version>1.2.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Edgent Samples ${samples.projname.platform}:</name>

  <properties>
    <samples.projname.platform>(Java 8)</samples.projname.platform>  <!--  tweaked by -Pplatform-* -->
    <edgent.runtime.platform/> <!-- set by -Pplatform-* -->    
    <edgent.runtime.groupId>org.apache.edgent${edgent.runtime.platform}</edgent.runtime.groupId>
    <!-- NOTE: do NOT override via 'mvn ... -Dedgent.runtime.version=<the-version>' -->
    <edgent.runtime.version>1.2.0</edgent.runtime.version>

    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
    <maven.version>3.3.1</maven.version>

    <jetty.version>9.3.6.v20151106</jetty.version>
    <gson.version>2.2.4</gson.version>
    <slf4j.version>1.7.12</slf4j.version>
    <retrolambda.version>2.5.1</retrolambda.version>
  </properties>

  <modules>
    <module>apps</module>
    <module>connectors</module>
    <module>console</module>
    <!-- <module>get-edgent-jars-project</module> intentionally omitted -->
    <module>scenarios</module>
    <!-- <module>template</module> intentionally omitted -->
    <module>topology</module>
    <module>utils</module>
  </modules>
    
  <profiles>
    <profile>
      <id>platform-java7</id>
      <properties>
        <edgent.runtime.platform>.java7</edgent.runtime.platform>
        <platform.java7>true</platform.java7>
        <samples.projname.platform>(Java 7)</samples.projname.platform>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>net.orfjackal.retrolambda</groupId>
            <artifactId>retrolambda-maven-plugin</artifactId>
            <version>${retrolambda.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>process-main</goal>
                  <goal>process-test</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- We don't currently support building samples for Android as many
         depend on the Development provider / Edgent Console
    -->
  </profiles>

  <dependencies>
    <!--
          In the examples we want this lib to be included,
          so we change the scope from 'provided' to 'compile'.
    -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
      <scope>compile</scope>
    </dependency>

    <!-- an SLF4J runtime implementation to use -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
      <version>${slf4j.version}</version>
      <scope>runtime</scope>
    </dependency>

    <!-- Other common sample dependencies -->
    <dependency>
      <groupId>${edgent.runtime.groupId}</groupId>
      <artifactId>edgent-providers-direct</artifactId>
      <version>${edgent.runtime.version}</version>
    </dependency>
    <dependency>
      <groupId>${edgent.runtime.groupId}</groupId>
      <artifactId>edgent-providers-development</artifactId>
      <version>${edgent.runtime.version}</version>
    </dependency>
    <dependency>
      <groupId>${edgent.runtime.groupId}</groupId>
      <artifactId>edgent-providers-iot</artifactId>
      <version>${edgent.runtime.version}</version>
    </dependency>

  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
          <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
            <testSource>${java.version}</testSource>
            <testTarget>${java.version}</testTarget>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.0.1</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <phase>verify</phase>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Inject the "incubating" into the output filename -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <finalName>apache-edgent-${project.version}-incubating-samples</finalName>
            <formats>
              <format>zip</format>
              <format>tar.gz</format>
            </formats>
          </configuration>
        </plugin>

        <!--
              This is a fake plugin which is used to tell m2e (Eclipse) how
              to process this maven project.
        -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>copy</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-remote-resources-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>process</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>

      <!-- Make sure the DISCLAIMER contains the incubator version -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.5</version><!--$NO-MVN-MAN-VER$-->
        <executions>
          <execution>
            <id>process-resource-bundles</id>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <resourceBundles>
                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
                <!-- Will generate META-INF/DISCLAIMER  -->
                <resourceBundle>org.apache.apache.resources:apache-incubator-disclaimer-resource-bundle:1.2-SNAPSHOT</resourceBundle>
              </resourceBundles>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- build an uber JAR -->
        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
         <version>3.0.0</version>
         <executions>
           <execution>
             <phase>package</phase>
             <goals>
               <goal>shade</goal>
             </goals>
             <configuration>
               <!-- avoid things like the following when running the uber:
                   java.lang.NoClassDefFoundError: org.eclipse.paho.client.mqttv3.logging.JSR47Logger
                   e.g., connectors.iotp uses watson-iot which uses
                   paho.mqtt.  Apparently watson-iot or paho.mqtt
                   has some behind the scenes depedency that's not
                   captured in the uber jar when minimize is true.
                 -->
               <!-- <minimizeJar>true</minimizeJar> -->
               <shadedArtifactAttached>true</shadedArtifactAttached>
               <shadedClassifierName>uber</shadedClassifierName>
               <!-- avoid "Invalid signature file digest for Manifest
                    main attributes" when running the uber jar.
                    An included jar's signed manifest isn't valid in the uber.
                 -->
               <filters>
                 <filter>
                   <artifact>*:*</artifact>
                   <excludes>
                     <exclude>META-INF/*.SF</exclude>
                     <exclude>META-INF/*.DSA</exclude>
                     <exclude>META-INF/*.RSA</exclude>
                   </excludes>
                 </filter>
               </filters>
             </configuration>
           </execution>
         </executions>
      </plugin>
    </plugins>
  </build>

</project>
