<?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</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>

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

  <name>Bigtop</name>
  <description>The development of packaging and tests of the Apache Hadoop
    ecosystem
  </description>
  <url>http://bigtop.apache.org/</url>
  <inceptionYear>2011</inceptionYear>

  <properties>
    <hadoop.version>2.7.2</hadoop.version>
    <!--An awful hack for BIGTOP-1429-->
    <hbase.version>1.1.3</hbase.version>
    <pig.version>0.12.1</pig.version>
    <pig-smoke.version>0.12.1</pig-smoke.version>
    <sqoop.version>1.4.5</sqoop.version>
    <sqoop2.version>1.99.4</sqoop2.version>
    <zookeeper.version>3.4.5</zookeeper.version>
    <giraph.version>1.0.0</giraph.version>
    <solr.version>4.6.0</solr.version>
    <spark.version>1.3.1</spark.version>
    <kafka.version>0.8.1.1</kafka.version>
    <phoenix.version>4.7.0</phoenix.version>
    <kite.version>1.1.0</kite.version>
    <spark-smoke.version>${project.version}</spark-smoke.version>

    <itest-common.version>${project.version}</itest-common.version>

    <groovy.version>2.4.3</groovy.version>
    <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
    <groovy-eclipse-compiler.version>2.8.0-01</groovy-eclipse-compiler.version>
    <gmaven.version>1.0</gmaven.version>
    <ant.version>1.8.2</ant.version>
    <commons.logging.version>1.1</commons.logging.version>
    <junit.version>4.11</junit.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.14</log4j.version>
    <antlr.version>3.4</antlr.version>
    <cxf.version>2.5.0</cxf.version>

    <maven.build.timestamp.format>
      yyyy-MM-dd'T'HH:mm
    </maven.build.timestamp.format>
    <buildDate>${maven.build.timestamp}</buildDate>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>${groovy.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy.maven.runtime</groupId>
        <artifactId>gmaven-runtime-1.6</artifactId>
        <version>${gmaven.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-launcher</artifactId>
        <version>${ant.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-junit</artifactId>
        <version>${ant.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>${ant.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>${commons.logging.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr</artifactId>
        <version>${antlr.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxrs</artifactId>
        <version>${cxf.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.bigtop.itest</groupId>
        <artifactId>itest-common</artifactId>
        <version>${itest-common.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <type>test-jar</type>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-minicluster</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common-test</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs-test</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-server</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-server</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>org.apache.pig</groupId>
        <artifactId>pig</artifactId>
        <version>${pig.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.pig</groupId>
        <artifactId>pigsmoke</artifactId>
        <version>${pig-smoke.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>${zookeeper.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.giraph</groupId>
        <artifactId>giraph</artifactId>
        <version>${giraph.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-solrj</artifactId>
        <version>${solr.version}</version>
      </dependency>
      <!-- Sqoop -->
      <dependency>
        <groupId>org.apache.sqoop</groupId>
        <artifactId>sqoop</artifactId>
        <classifier>hadoop200</classifier>
        <version>${sqoop.version}</version>
      </dependency>
      <!-- Sqoop2 -->
      <dependency>
        <groupId>org.apache.sqoop</groupId>
        <artifactId>sqoop-core</artifactId>
        <version>${sqoop2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.sqoop</groupId>
        <artifactId>sqoop-client</artifactId>
        <version>${sqoop2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.sqoop</groupId>
        <artifactId>sqoop-common</artifactId>
        <version>${sqoop2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>${spark.version}</version>
      </dependency>
       <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka</artifactId>
        <version>${kafka.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.phoenix</groupId>
        <artifactId>phoenix-core</artifactId>
        <version>${phoenix.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.phoenix</groupId>
        <artifactId>phoenix-flume</artifactId>
        <version>${phoenix.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.phoenix</groupId>
        <artifactId>phoenix-pig</artifactId>
        <version>${phoenix.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh-external</artifactId>
        <version>2.6</version>
      </extension>
    </extensions>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.7</version>
          <configuration>
            <excludes>
              <exclude>.git/**</exclude>
              <exclude>.idea/**</exclude>
              <exclude>**/.gitignore</exclude>
              <!-- Test data with rigid structure and/or binary -->
              <exclude>bigtop-tests/test-artifacts/**/resources/**</exclude>
              <exclude>bigtop-tests/smoke-tests/alluxio/datafile</exclude>
              <exclude>bigtop-tests/smoke-tests/hive/passwd.ql</exclude>
              <exclude>bigtop-tests/smoke-tests/kite/sandwiches.csv</exclude>
              <exclude>bigtop-tests/smoke-tests/phoenix/*.csv</exclude>
              <exclude>bigtop-tests/smoke-tests/phoenix/*.sql</exclude>
              <exclude>bigtop-tests/smoke-tests/ignite-hadoop/*.data</exclude>
              <exclude>bigtop-tests/smoke-tests/tajo/table1/*.csv</exclude>
              <exclude>**/target/**</exclude>
              <exclude>**/build/**</exclude>
              <exclude>**/.gradle/**</exclude>
              <exclude>**/*.iml</exclude>
              <exclude>.gradle</exclude>
              <exclude>output/**</exclude>
              <exclude>MAINTAINERS.txt</exclude>
              <exclude>buildSrc/build/**</exclude>
              <exclude>bigtop-data-generators/**/input_data/**</exclude>
              <exclude>docker/**/*.yaml</exclude>
              <exclude>bigtop-deploy/puppet/**/*.yaml</exclude>
              <exclude>bigtop-deploy/puppet/modules/hadoop/**/id_hdfsuser*</exclude>
              <exclude>bigtop-deploy/puppet/modules/bigtop-util/Gemfile.lock</exclude>
              <exclude>bigtop-deploy/puppet/modules/zeppelin/templates/interpreter.json</exclude>
              <!-- Debian package files that have a rigid structure (* matches package name) -->
              <exclude>bigtop-packages/src/deb/*/*.dirs</exclude>
              <exclude>bigtop-packages/src/deb/*/dirs</exclude>
              <exclude>bigtop-packages/src/deb/*/*.install</exclude>
              <exclude>bigtop-packages/src/deb/*/*.include</exclude>
              <exclude>bigtop-packages/src/deb/**/include-binaries</exclude>
              <exclude>bigtop-packages/src/deb/**/format</exclude>
              <exclude>bigtop-packages/src/deb/*/*.manpages</exclude>
              <exclude>bigtop-packages/src/deb/*/*.docs</exclude>
              <exclude>bigtop-packages/src/deb/*/docs</exclude>
              <exclude>bigtop-packages/src/deb/*/compat</exclude>
              <exclude>bigtop-packages/src/deb/*/source/format</exclude>
              <exclude>bigtop-packages/src/deb/*/*.lintian-overrides</exclude>
              <exclude>bigtop-packages/src/deb/*/shlibs.local</exclude>
              <exclude>bigtop-packages/src/**/*.diff</exclude>
              <exclude>bigtop-packages/src/common/*/*.json</exclude>
              <exclude>bigtop-packages/src/common/**/*.default</exclude>
              <exclude>bigtop-repos/apt/distributions</exclude>
              <!-- Juju charm files with rigid structure -->
              <exclude>bigtop-packages/src/charm/**/wheelhouse.txt</exclude>
              <exclude>bigtop-packages/src/charm/**/*.json</exclude>
              <exclude>bigtop-packages/src/charm/**/*.svg</exclude>
              <exclude>bigtop-packages/src/charm/**/*.yaml</exclude>
              <exclude>bigtop-deploy/juju/**/*.yaml</exclude>
              <exclude>bigtop-tests/cloud-weather-report/**/*.yaml</exclude>
              <!-- Miscelaneous individual files -->
              <exclude>src/site/resources/bigtop.rdf</exclude>
              <exclude>src/site/resources/images/bigtop-logo.ai</exclude>
                <!--Excluding a file with FreeBSD Documentation License-->
              <exclude>src/site/resources/css/freebsd_docbook.css</exclude>
              <exclude>test/MANIFEST.txt</exclude>
              <exclude>
                bigtop-deploy/puppet/modules/hadoop/templates/taskcontroller.cfg
              </exclude>
              <exclude>
                bigtop-deploy/puppet/modules/hadoop/templates/container-executor.cfg
              </exclude>
              <exclude>bigtop-deploy/puppet/README.md</exclude>
              <exclude>bigtop-deploy/puppet/modules/qfs/README.md</exclude>
              <exclude>bigtop-deploy/puppet/config/site.csv.example</exclude>
              <exclude>dl/**</exclude>
              <exclude>bigtop-deploy/puppet/modules/gpdb/templates/**</exclude>
              <exclude>provisioner/docker/config/hiera.yaml</exclude>
              <exclude>provisioner/docker/config/hieradata/PLACEHOLDER</exclude>
              <exclude>provisioner/docker/config/hosts</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pdf-plugin</artifactId>
          <version>1.2</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-confluence</artifactId>
              <version>1.1.3</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.3</version>
          <configuration>
            <skipDeploy>true</skipDeploy>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <version>1.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <!--Build the documentation. We build it twice. Once as a single page and then again as multipage. -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <executions>
          <execution>
            <id>stage-for-scm-publish</id>
            <phase>post-site</phase>
            <goals>
              <goal>stage</goal>
            </goals>
            <configuration>
              <skipDeploy>false</skipDeploy>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <executions>
          <execution>
            <id>scm-publish</id>
            <phase>site-deploy</phase>
            <goals>
              <goal>publish-scm</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.7</version>
      </plugin>
    </plugins>
  </reporting>

  <issueManagement>
    <system>JIRA</system>
    <url>http://issues.apache.org/jira/browse/BIGTOP</url>
  </issueManagement>
  <mailingLists>
    <mailingList>
      <name>Users</name>
      <post>user@bigtop.apache.org</post>
      <subscribe>user-subscribe@bigtop.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@bigtop.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/bigtop-user/</archive>
    </mailingList>
    <mailingList>
      <name>Development</name>
      <post>dev@bigtop.apache.org</post>
      <subscribe>dev-subscribe@bigtop.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@bigtop.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/bigtop-dev/</archive>
    </mailingList>
    <mailingList>
      <name>Commits</name>
      <post>commits@bigtop.apache.org</post>
      <subscribe>commits-subscribe@bigtop.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@bigtop.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/bigtop-commits/
      </archive>
    </mailingList>
  </mailingLists>
  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/bigtop.git
    </connection>
    <url>https://git-wip-us.apache.org/repos/asf?p=bigtop.git</url>
  </scm>

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/infra/websites/staging/bigtop/trunk/content</url>
    </site>
  </distributionManagement>

  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <descriptors>
                <descriptor>src/assembly/release-assembly.xml</descriptor>
              </descriptors>
            </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
