<?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.samples</groupId>
  <artifactId>edgent-samples</artifactId>
  <version>1.3.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>
    <!--  at least for now, the samples version is lockstep with the core -->
    <edgent.runtime.version>${project.version}</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>
