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

  <parent>
    <groupId>org.apache.falcon</groupId>
    <artifactId>falcon-main</artifactId>
    <version>0.11-SNAPSHOT</version>
  </parent>
  <artifactId>falcon-distro</artifactId>
  <description>Apache Falcon Distro</description>
  <name>Apache Falcon Distro</name>

  <properties>
    <hbase.target.dir>${project.build.directory}/hbase</hbase.target.dir>
    <hbase.archive.host>http://apache.mirrors.pair.com</hbase.archive.host>
    <hbase.archive.version>${hbase.version}</hbase.archive.version>
    <hbase.uri.path>hbase/stable</hbase.uri.path>
    <hbase.archive>${hbase.archive.host}/${hbase.uri.path}/hbase-${hbase.archive.version}-bin.tar.gz</hbase.archive>
    <hbase.root.folder>hbase-${hbase.archive.version}</hbase.root.folder>
  </properties>

  <packaging>pom</packaging>
  <profiles>
    <profile>
      <id>distributed</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <descriptors>
                <descriptor>../src/main/assemblies/distributed-package.xml</descriptor>
                <descriptor>../src/main/assemblies/src-package.xml</descriptor>
              </descriptors>
              <finalName>apache-falcon-distributed-${project.version}</finalName>
              <tarLongFileMode>posix</tarLongFileMode>
            </configuration>
            <executions>
              <execution>
                <id>dist-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
       <id>package-standalone-hbase</id>
       <activation>
           <activeByDefault>false</activeByDefault>
           <property>
              <name>package-standalone-hbase</name>
           </property>
       </activation>
       <build>
         <plugins>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-antrun-plugin</artifactId>
             <version>1.7</version>
             <executions>
               <execution>
                 <phase>generate-resources</phase>
                 <goals>
                   <goal>run</goal>
                 </goals>
                 <configuration>
                   <target name="Download HBase">
                     <mkdir dir="${hbase.target.dir}"/>
                     <get
                         src="${hbase.archive}"
                         dest="${project.build.directory}/hbase-${hbase.archive.version}-bin.tar.gz"
                         usetimestamp="true"
                         verbose="true" skipexisting="true"
                         />
                     <untar
                         src="${project.build.directory}/hbase-${hbase.archive.version}-bin.tar.gz"
                         dest="${project.build.directory}/hbase.temp"
                         compression="gzip"
                         />
                     <copy todir="${hbase.target.dir}">
                       <fileset dir="${project.build.directory}/hbase.temp/${hbase.root.folder}">
                         <include name="**/*"/>
                       </fileset>
                     </copy>
                     <delete dir="${project.build.directory}/hbase.temp"/>
                   </target>
                 </configuration>
               </execution>
             </executions>
           </plugin>
         </plugins>
       </build>
    </profile>
  </profiles>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>../src/main/assemblies/standalone-package.xml</descriptor>
            <descriptor>../src/main/assemblies/src-package.xml</descriptor>
          </descriptors>
          <finalName>apache-falcon-${project.version}</finalName>
          <tarLongFileMode>posix</tarLongFileMode>
        </configuration>
        <executions>
          <execution>
            <id>dist-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
