<?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/**/*.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>
            </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>
