<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright © 2014-2016 Cask Data, Inc.

  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>

  <parent>
    <groupId>co.cask.cdap</groupId>
    <artifactId>cdap</artifactId>
    <version>4.3.2</version>
  </parent>

  <artifactId>cdap-standalone</artifactId>
  <name>CDAP Standalone</name>
  <packaging>jar</packaging>

  <properties>
    <sdk.hadoop.version>2.8.0</sdk.hadoop.version>
  </properties>

  <dependencies>
    <!-- Added to override the embedded guava class in hive-exec -->
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
    </dependency>

    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-api</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-common</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-cli</artifactId>
      <version>${project.version}</version>
      <!--
        Excludes unnecessary transitive dependencies from cdap-cli.
        cli is added as dependency is because we want to copy the fat jar.
      -->
      <exclusions>
        <exclusion>
          <groupId>jline</groupId>
          <artifactId>jline</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.googlecode.concurrent-trees</groupId>
          <artifactId>concurrent-trees</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-data-fabric</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-watchdog-api</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-watchdog</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-security</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-app-fabric</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-gateway</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-explore</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-explore-jdbc</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-api-spark</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-spark-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-tms</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tephra</groupId>
      <artifactId>tephra-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.twill</groupId>
      <artifactId>twill-discovery-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.twill</groupId>
      <artifactId>twill-discovery-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.twill</groupId>
      <artifactId>twill-core</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.kafka</groupId>
          <artifactId>kafka_2.10</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.xerial.snappy</groupId>
      <artifactId>snappy-java</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-client</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-common</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-server-common</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-api</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-auth</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-annotations</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <version>${sdk.hadoop.version}</version>
      <exclusions>
        <exclusion>
          <groupId>io.netty</groupId>
          <artifactId>netty-all</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-common</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-app</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <!--Below three dependencies are needed for Azure Data Lake File System-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.8</version>
    </dependency>
    <dependency>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-data-lake-store-sdk</artifactId>
      <version>2.1.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-azure-datalake</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-azure</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-storage</artifactId>
      <version>2.2.0</version>
    </dependency>
    <!--Amazon S3 dependencies-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-aws</artifactId>
      <version>${sdk.hadoop.version}</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-s3</artifactId>
      <version>1.11.133</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-kms</artifactId>
      <version>1.11.133</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-core</artifactId>
      <version>1.11.133</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-cbor</artifactId>
      <version>2.8.8</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>jmespath-java</artifactId>
      <version>1.11.133</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.8</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.8.8</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-scala_2.10</artifactId>
      <version>2.8.8</version>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.9.9</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.10</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.4.4</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.ion</groupId>
      <artifactId>ion-java</artifactId>
      <version>1.0.2</version>
    </dependency>
    <!--End of Amazon S3 dependencies-->
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-ui</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>co.cask.cdap</groupId>
      <artifactId>cdap-app-fabric</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <excludes>
            <exclude>*.xml</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <id>test-jar</id>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>dist</id>
      <properties>
        <sdk.dir>${project.build.directory}/sdk</sdk.dir>
        <stage.opt.dir>${sdk.dir}/cdap-sandbox-${project.version}</stage.opt.dir>
        <stage.lib.dir>${stage.opt.dir}/lib</stage.lib.dir>
        <stage.libexec.dir>${stage.opt.dir}/libexec</stage.libexec.dir>
        <stage.artifacts.dir>${stage.opt.dir}/artifacts</stage.artifacts.dir>
        <additional.artifacts.jar.pattern>**/target/*.jar</additional.artifacts.jar.pattern>
        <additional.artifacts.config.pattern>**/target/*.json</additional.artifacts.config.pattern>
        <additional.artifacts.exclude.pattern>**/target/*-tests.jar</additional.artifacts.exclude.pattern>
      </properties>

      <!-- Add dependencies on spark api and core. It just for making sure those artifacts are built before this -->
      <dependencies>
        <dependency>
          <groupId>co.cask.cdap</groupId>
          <artifactId>cdap-api-spark</artifactId>
          <version>${project.version}</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>co.cask.cdap</groupId>
          <artifactId>cdap-spark-core</artifactId>
          <version>${project.version}</version>
          <scope>provided</scope>
          <exclusions>
            <exclusion>
              <groupId>com.fasterxml.jackson.module</groupId>
              <artifactId>jackson-module-scala_2.10</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>co.cask.cdap</groupId>
          <artifactId>cdap-spark-core2_2.11</artifactId>
          <version>${project.version}</version>
          <scope>provided</scope>
        </dependency>
        <!-- Add dependencies on cdap-operational-stats to make sure it is built before standalone -->
        <dependency>
          <groupId>co.cask.cdap</groupId>
          <artifactId>cdap-operational-stats-core</artifactId>
          <version>${project.version}</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.8</version>
            <executions>
              <execution>
                <id>copy-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${stage.lib.dir}</outputDirectory>
                  <overWriteReleases>false</overWriteReleases>
                  <overWriteSnapshots>false</overWriteSnapshots>
                  <overWriteIfNewer>true</overWriteIfNewer>
                  <excludeGroupIds>org.apache.hbase,asm,org.apache.kafka,org.scala-lang</excludeGroupIds>
                  <excludeArtifactIds>zkclient,servlet-api,cdap-cli,cdap-explore-jdbc</excludeArtifactIds>
                  <prependGroupId>true</prependGroupId>
                  <silent>true</silent>
                  <includeScope>runtime</includeScope>
                </configuration>
              </execution>
              <execution>
                <!-- This is for copying CDAP fat jars: cdap-cli and cdap-explore-jdbc -->
                <id>copy-libexec-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${stage.libexec.dir}</outputDirectory>
                  <overWriteReleases>false</overWriteReleases>
                  <overWriteSnapshots>false</overWriteSnapshots>
                  <overWriteIfNewer>true</overWriteIfNewer>
                  <includeArtifactIds>cdap-cli,cdap-explore-jdbc</includeArtifactIds>
                  <prependGroupId>true</prependGroupId>
                  <silent>true</silent>
                  <includeScope>runtime</includeScope>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
              <execution>
                <id>copy-opt</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${stage.opt.dir}</outputDirectory>
                  <useDefaultDelimiters>false</useDefaultDelimiters>
                  <delimiters>
                    <delimiter>@@</delimiter>
                  </delimiters>
                  <resources>
                    <resource>
                      <directory>${project.basedir}/src/main/resources</directory>
                      <targetPath>conf</targetPath>
                    </resource>
                    <resource>
                      <directory>${project.basedir}/src/dist</directory>
                      <includes>
                        <include>README</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                    <resource>
                      <directory>${project.basedir}/src/dist/LICENSES</directory>
                      <targetPath>LICENSES</targetPath>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-distributions</directory>
                      <includes>
                        <include>VERSION</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                    <resource>
                      <directory>${project.basedir}/bin</directory>
                      <targetPath>bin</targetPath>
                      <filtering>true</filtering>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-common/bin</directory>
                      <targetPath>bin</targetPath>
                      <filtering>true</filtering>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-explore/bin</directory>
                      <targetPath>bin</targetPath>
                      <includes>
                        <include>send-query*</include>
                      </includes>
                    </resource>
                    <!-- Copy binaries for Windows -->
                    <resource>
                      <directory>${project.basedir}/libexec</directory>
                      <targetPath>libexec</targetPath>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-unit-test/src/main/resources</directory>
                      <targetPath>libexec/bin</targetPath>
                      <includes>
                        <include>*.exe</include>
                      </includes>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-unit-test/src/main/resources</directory>
                      <targetPath>lib/native</targetPath>
                      <includes>
                        <include>*.dll</include>
                      </includes>
                    </resource>
                    <!-- Copy cdap-ui -->
                    <resource>
                     <directory>${project.parent.basedir}/cdap-ui/target/stage-packaging/opt/cdap/ui</directory>
                     <targetPath>ui</targetPath>
                     <excludes>
                      <exclude>**LICENSE**</exclude>
                      <exclude>bin/node</exclude>
                     </excludes>
                   </resource>
                    <!-- Copy examples code -->
                    <resource>
                      <directory>${project.parent.basedir}/cdap-examples</directory>
                      <targetPath>examples</targetPath>
                      <includes>
                        <include>README*</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-examples</directory>
                      <targetPath>examples</targetPath>
                      <includes>
                        <include>resources/**</include>
                        <include>**/src/**</include>
                        <include>**/bin/**</include>
                        <include>**/resources/**</include>
                        <include>**/pom.xml</include>
                      </includes>
                      <excludes>
                        <exclude>pom.xml</exclude>
                        <exclude>build.gradle</exclude>
                        <exclude>**/target/original*.jar</exclude>
                        <exclude>**/target/apidocs/**</exclude>
                        <exclude>**/target/stage-packaging*/**</exclude>
                      </excludes>
                    </resource>
                    <!-- Copy runtime extensions. Currently only has Spark -->
                    <resource>
                      <directory>${project.parent.basedir}/cdap-spark-core/target/libexec</directory>
                      <targetPath>ext/runtimes/spark1_2.10</targetPath>
                      <includes>
                        <include>*.jar</include>
                      </includes>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-spark-core2_2.11/target/libexec</directory>
                      <targetPath>ext/runtimes/spark2_2.11</targetPath>
                      <includes>
                        <include>*.jar</include>
                      </includes>
                    </resource>
                    <!-- copy operational stats extensions -->
                    <resource>
                      <directory>${project.parent.basedir}/cdap-operational-stats-core/target</directory>
                      <targetPath>ext/operations/core</targetPath>
                      <includes>
                        <include>*.sdk.jar</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <execution>
                <id>copy-pipelines-spark1_2.10</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${stage.artifacts.dir}/spark1_2.10</outputDirectory>
                  <resources>
                    <resource>
                      <directory>
                        ${project.parent.basedir}/cdap-app-templates/cdap-etl/cdap-data-pipeline/target
                      </directory>
                      <includes>
                        <include>cdap-data-pipeline-${project.version}.jar</include>
                      </includes>
                    </resource>
                    <resource>
                      <directory>
                        ${project.parent.basedir}/cdap-app-templates/cdap-etl/cdap-data-streams/target
                      </directory>
                      <includes>
                        <include>cdap-data-streams-${project.version}.jar</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <execution>
                <id>copy-pipelines-spark2_2.11</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${stage.artifacts.dir}/spark2_2.11</outputDirectory>
                  <resources>
                    <resource>
                      <directory>
                        ${project.parent.basedir}/cdap-app-templates/cdap-etl/cdap-data-pipeline2_2.11/target
                      </directory>
                      <includes>
                        <include>cdap-data-pipeline2_2.11-${project.version}.jar</include>
                      </includes>
                    </resource>
                    <resource>
                      <directory>
                        ${project.parent.basedir}/cdap-app-templates/cdap-etl/cdap-data-streams2_2.11/target
                      </directory>
                      <includes>
                        <include>cdap-data-streams2_2.11-${project.version}.jar</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <execution>
                <id>copy-dq</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${stage.artifacts.dir}</outputDirectory>
                  <resources>
                    <resource>
                      <directory>
                        ${project.parent.basedir}/cdap-app-templates/cdap-data-quality/target
                      </directory>
                      <includes>
                        <include>cdap-data-quality-${project.version}.jar</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <!-- Copy CLI scripts -->
              <execution>
                <id>copy-cli-scripts</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${stage.opt.dir}</outputDirectory>
                  <useDefaultDelimiters>false</useDefaultDelimiters>
                  <delimiters>
                    <delimiter>@@</delimiter>
                  </delimiters>
                  <resources>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-cli/target</directory>
                      <targetPath>bin</targetPath>
                      <includes>
                        <include>cli-${project.version}.jar</include>
                      </includes>
                    </resource>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-cli/bin</directory>
                      <targetPath>bin</targetPath>
                      <includes>
                        <include>cdap-cli.bat</include>
                        <include>cdap-cli.sh</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <!-- Copy example deploy pom -->
              <execution>
                <id>copy-examples-pom</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration combine.self="override">
                  <outputDirectory>${project.build.directory}/examples</outputDirectory>
                  <delimiters>
                    <delimiter>@</delimiter>
                  </delimiters>
                  <useDefaultDelimiters>false</useDefaultDelimiters>
                  <resources>
                    <resource>
                      <directory>${project.parent.basedir}/cdap-examples</directory>
                      <includes>
                        <include>deploy_pom.xml</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
              <!-- Copy any additional system artifacts.
                   For example, if you want to include plugins from hydrator-plugins. -->
              <execution>
                <id>copy-additional-system-artifacts</id>
                <phase>prepare-package</phase>
                <configuration>
                  <target if="additional.artifacts.dir">
                    <copy todir="${stage.artifacts.dir}" flatten="true">
                      <fileset dir="${additional.artifacts.dir}">
                        <include name="${additional.artifacts.jar.pattern}"/>
                        <include name="${additional.artifacts.config.pattern}"/>
                        <exclude name="${additional.artifacts.exclude.pattern}"/>
                        <exclude name="**/target/*-sources.jar"/>
                        <exclude name="**/target/*-javadoc.jar"/>
                        <!-- Wrangler excludes -->
                        <exclude name="**/target/wrangler-core*"/>
                        <exclude name="**/target/wrangler-test*"/>
                        <!--We don't want to package the following plugins with CDAP-->
                        <exclude name="**/target/solrsearch-plugins*"/>
                        <exclude name="**/target/hive-plugins*"/>
                        <exclude name="**/target/elasticsearch-plugins*"/>
                        <exclude name="**/target/mongodb-plugins*"/>
                        <exclude name="**/target/cassandra-plugins*"/>
                      </fileset>
                    </copy>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
              <!-- Make CDAP and CLI scripts executable -->
              <execution>
                <id>copy-cli-bash</id>
                <phase>prepare-package</phase>
                <configuration>
                  <target>
                    <chmod file="${stage.opt.dir}/bin/cdap-cli.bat" perm="755"/>
                    <chmod file="${stage.opt.dir}/bin/cdap.bat" perm="755"/>
                    <chmod file="${stage.opt.dir}/bin/cdap" perm="755"/>
                    <chmod file="${stage.opt.dir}/bin/functions.sh" perm="644"/>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
              <!--This is for workaround a bug in resource-plugin that it doesn't preserve file permission-->
              <!--http://jira.codehaus.org/browse/MRESOURCES-132-->
              <execution>
                <id>bin-permission</id>
                <phase>prepare-package</phase>
                <configuration>
                  <target>
                    <chmod file="${stage.opt.dir}/bin/**" perm="755"/>
                    <chmod perm="755">
                      <fileset dir="${stage.opt.dir}/examples">
                        <include name="**/bin/**"/>
                      </fileset>
                    </chmod>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
              <!-- Rename examples deploy_pom.xml to pom.xml -->
              <execution>
                <id>rename-pom</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <copy file="${project.build.directory}/examples/deploy_pom.xml" tofile="${stage.opt.dir}/examples/pom.xml" />
                  </target>
                </configuration>
              </execution>
              <!--
                Rename cdap-data-pipeline2_2.11 to cdap-data-pipeline and cdap-data-streams2_2.11 to cdap-data-streams
                This is may be removed if the UI supports different artifacts for each pipeline type.
              -->
              <execution>
                <id>rename-pipeline-jars</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <move file="${stage.artifacts.dir}/spark2_2.11/cdap-data-pipeline2_2.11-${project.version}.jar" tofile="${stage.artifacts.dir}/spark2_2.11/cdap-data-pipeline-${project.version}.jar" />
                    <move file="${stage.artifacts.dir}/spark2_2.11/cdap-data-streams2_2.11-${project.version}.jar" tofile="${stage.artifacts.dir}/spark2_2.11/cdap-data-streams-${project.version}.jar" />
                  </target>
                </configuration>
              </execution>
              <!-- Skip the unrelated one when rpm/deb profiles are on -->
              <execution>
                <id>rpm-bin-permission</id>
                <phase>prepare-package</phase>
                <configuration combine.self="override">
                  <skip>true</skip>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
              <execution>
                <id>deb-bin-permission</id>
                <phase>prepare-package</phase>
                <configuration combine.self="override">
                  <skip>true</skip>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <executions>
              <execution>
                <id>tgz-package</id>
                <configuration combine.self="override">
                  <skipAssembly>true</skipAssembly>
                </configuration>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
              <execution>
                <id>sdk-package</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration combine.self="override">
                  <descriptors>
                    <descriptor>${project.basedir}/src/main/assembly/sdk.xml</descriptor>
                  </descriptors>
                  <appendAssemblyId>false</appendAssemblyId>
                  <attach>false</attach>
                  <finalName>cdap-sandbox-${project.version}</finalName>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- Extra deployment for cdap sdk -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8</version>
            <executions>
              <execution>
                <id>deploy-sdk</id>
                <phase>deploy</phase>
                <goals>
                  <goal>deploy-file</goal>
                </goals>
                <configuration>
                  <version>${project.version}</version>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>cdap-sandbox</artifactId>
                  <packaging>zip</packaging>
                  <generatePom>false</generatePom>
                  <file>${project.build.directory}/cdap-sandbox-${project.version}.zip</file>
                  <repositoryId>continuuity</repositoryId>
                  <url>${deploy.url}</url>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
