<!--
  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.falcon</groupId>
        <artifactId>falcon-main</artifactId>
        <version>0.7</version>
    </parent>
    <groupId>org.apache.falcon.regression</groupId>
    <artifactId>falcon-regression</artifactId>
    <version>0.7</version>
    <description>Regression Framework for Falcon</description>
    <name>Apache Falcon Regression</name>
    <packaging>pom</packaging>

    <modules>
        <module>merlin-core</module>
        <module>merlin</module>
    </modules>

    <properties>
        <oozie.version>4.1.0</oozie.version>
        <hive.version>1.2.1</hive.version>
        <hcatalog.version>1.2.1</hcatalog.version>
        <hadoop.version>2.7.1</hadoop.version>
        <testng.exclude.pattern>nothing</testng.exclude.pattern>
        <testng.include.pattern>**/Test*.java,**/*Test.java,**/*TestCase.java</testng.include.pattern>
    </properties>

    <profiles>
        <profile>
            <id>hadoop-2</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-client</artifactId>
                        <version>${hadoop.version}</version>
                        <scope>runtime</scope>
                        <exclusions>
                            <exclusion>
                                <groupId>org.glassfish</groupId>
                                <artifactId>javax.servlet</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-hdfs</artifactId>
                        <version>${hadoop.version}</version>
                        <scope>runtime</scope>
                    </dependency>

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

                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-auth</artifactId>
                        <version>${hadoop.version}</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-distcp</artifactId>
                        <version>${hadoop.version}</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-yarn-server-resourcemanager</artifactId>
                        <version>${hadoop.version}</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-yarn-server-nodemanager</artifactId>
                        <version>${hadoop.version}</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-azure</artifactId>
                        <version>${hadoop.version}</version>
                    </dependency>

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

                    <dependency>
                        <groupId>org.apache.hive.hcatalog</groupId>
                        <artifactId>hive-webhcat-java-client</artifactId>
                        <version>${hive.version}</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hive.hcatalog</groupId>
                        <artifactId>hive-hcatalog-core</artifactId>
                        <version>${hive.version}</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-jdbc</artifactId>
                        <version>${hive.version}</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-metastore</artifactId>
                        <version>${hive.version}</version>
                    </dependency>

                </dependencies>
            </dependencyManagement>
        </profile>
    </profiles>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.8.8</version>
            </dependency>

            <dependency>
                <groupId>org.apache.oozie</groupId>
                <artifactId>oozie-client</artifactId>
                <version>${oozie.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-auth</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.activemq</groupId>
                        <artifactId>activemq-client</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-simple</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.codehaus.jackson</groupId>
                        <artifactId>jackson-core-asl</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.codehaus.jackson</groupId>
                        <artifactId>jackson-mapper-asl</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-cli</groupId>
                        <artifactId>commons-cli</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.falcon.regression</groupId>
                <artifactId>falcon-merlin-core</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>annotations</artifactId>
                <version>2.0.1</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.4.1</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.4.1</version>
            </dependency>

            <dependency>
                <groupId>com.jcraft</groupId>
                <artifactId>jsch</artifactId>
                <version>0.1.51</version>
            </dependency>

            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.1</version>
                <scope>compile</scope>
            </dependency>

            <dependency>
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
                <version>1.4.01</version>
            </dependency>

            <dependency>
                <groupId>xmlunit</groupId>
                <artifactId>xmlunit</artifactId>
                <version>1.3</version>
            </dependency>

            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.0</version>
            </dependency>

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-firefox-driver</artifactId>
                <version>2.45.0</version>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-support</artifactId>
                <version>2.45.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-exec</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>18.0</version>
            </dependency>

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.4</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <directory>target</directory>
        <outputDirectory>target/classes</outputDirectory>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <testOutputDirectory>target/test-classes</testOutputDirectory>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.2.1</version>
                </plugin>

                <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-surefire-plugin</artifactId>
                    <version>2.17</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>0.7</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>2.9.1</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>jar</goal>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <failIfNoTests>false</failIfNoTests>
                    <redirectTestOutputToFile>${redirectConsoleOutput}</redirectTestOutputToFile>
                    <forkCount>1</forkCount>
                    <reuseForks>true</reuseForks>
                    <argLine>-Denvironment=${config.file}</argLine>
                    <parallel>methods</parallel>
                    <threadCount>1</threadCount>
                    <groups>${testng.groups}</groups>
                    <excludedGroups>${testng.exclude.groups}</excludedGroups>
                    <excludes>
                        <exclude>${testng.exclude.pattern}</exclude>
                    </excludes>
                    <includes>
                        <include>${testng.include.pattern}</include>
                    </includes>
                    <additionalClasspathElements>
                        <!-- Hack to get the dir in CP through CLI and idea -->
                        <additionalClasspathElement>${hadoop.conf.dir}</additionalClasspathElement>
                        <additionalClasspathElement>${hive.conf.dir}</additionalClasspathElement>
                        <additionalClasspathElement>${falcon.conf.dir}</additionalClasspathElement>
                        <additionalClasspathElement>merlin/src/test/resources/hadoop-conf
                        </additionalClasspathElement>
                        <additionalClasspathElement>src/test/resources/hadoop-conf
                        </additionalClasspathElement>
                        <additionalClasspathElement>merlin/src/test/resources/falcon-conf
                        </additionalClasspathElement>
                        <additionalClasspathElement>src/test/resources/falcon-conf
                        </additionalClasspathElement>
                    </additionalClasspathElements>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>org.apache.falcon.regression.TestngListener</value>
                        </property>
                    </properties>
                    <!--<skipTests>true</skipTests>-->
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <useDefaultExcludes>true</useDefaultExcludes>
                    <useMavenDefaultExcludes>true</useMavenDefaultExcludes>
                    <useIdeaDefaultExcludes>true</useIdeaDefaultExcludes>
                    <useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
                    <excludeSubProjects>true</excludeSubProjects>
                    <excludes>
                        <exclude>*.txt</exclude>
                        <exclude>.git/**</exclude>
                        <exclude>.idea/**</exclude>
                        <exclude>oozie_logs/**</exclude>
                        <exclude>**/*.twiki</exclude>
                        <exclude>**/*.iml</exclude>
                        <exclude>**/target/**</exclude>
                        <exclude>**/activemq-data/**</exclude>
                        <exclude>**/build/**</exclude>
                        <exclude>*.patch</exclude>
                        <exclude>derby.log</exclude>
                        <exclude>**/logs/**</exclude>
                        <exclude>**/.classpath</exclude>
                        <exclude>**/.project</exclude>
                        <exclude>**/.settings/**</exclude>
                        <exclude>**/test-output/**</exclude>
                        <exclude>**/data.txt</exclude>
                        <exclude>**/maven-eclipse.xml</exclude>
                        <exclude>**/.externalToolBuilders/**</exclude>
                        <exclude>**/part-*</exclude>
                        <exclude>**/resources/**</exclude>
                    </excludes>
                    <!--<argLine>-Dfalcon.log.dir=target/logs -Dfalcon.embeddedmq.data=target/data</argLine>-->
                </configuration>
                <executions>
                    <execution>
                        <id>rat-check</id>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <phase>verify</phase>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.falcon</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>${project.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>checkstyle-check</id>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <phase>verify</phase>
                        <configuration>
                            <consoleOutput>true</consoleOutput>
                            <includeTestSourceDirectory>true</includeTestSourceDirectory>
                            <configLocation>falcon/checkstyle.xml</configLocation>
                            <headerLocation>falcon/checkstyle-java-header.txt</headerLocation>
                            <failOnViolation>true</failOnViolation>
                            <skip>${skipCheck}</skip>
                            <excludes>**/entity/v0/*/**</excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <configuration>
                    <!--debug>true</debug -->
                    <xmlOutput>true</xmlOutput>
                    <excludeFilterFile>
                        ${project.basedir}/../../checkstyle/src/main/resources/falcon/findbugs-exclude.xml
                    </excludeFilterFile>
                    <failOnError>true</failOnError>
                    <skip>${skipCheck}</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>findbugs-check</id>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <phase>verify</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
