<!--
 ! 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>
    <artifactId>apache-asterixdb</artifactId>
    <groupId>org.apache.asterix</groupId>
    <version>0.9.4</version>
  </parent>
  <artifactId>asterix-app</artifactId>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>A business-friendly OSS license</comments>
    </license>
  </licenses>
  <properties>
    <root.dir>${basedir}/..</root.dir>
    <appendedResourcesDirectory>${basedir}/src/main/appended-resources</appendedResourcesDirectory>
    <sonar.sources>pom.xml,src/main/java,src/main/resources</sonar.sources>
  </properties>
  <build>
    <plugins>
      <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>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>revision</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <!--
              If you'd like to tell the plugin where your .git directory is,
              use this setting, otherwise we'll perform a search trying to
              figure out the right directory. It's better to add it explicite IMHO.
          -->
          <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
          <!-- this is false by default, forces the plugin to generate the git.properties file -->
          <generateGitPropertiesFile>true</generateGitPropertiesFile>

          <!-- The path for the to be generated properties file, it's relative to ${project.basedir} -->
          <generateGitPropertiesFilename>./target/classes/git.properties</generateGitPropertiesFilename>

          <!-- there is no .git directory when building from a source assembly- a static git.properties file (generated
               at source assembly time) is used in this case -->
          <failOnNoGitDirectory>false</failOnNoGitDirectory>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-external-data-resources</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>target/data/csv</outputDirectory>
              <overwrite>true</overwrite>
              <resources>
                <resource>
                  <directory>../asterix-external-data/src/test/resources</directory>
                  <includes>
                    <include>change_feed.csv</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.asterix</groupId>
        <artifactId>asterix-test-datagenerator-maven-plugin</artifactId>
        <version>${project.version}</version>
        <executions>
          <execution>
            <id>replace-template-data</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>generate-testdata</goal>
            </goals>
            <configuration>
              <inputFiles>
                <directory>data</directory>
                <includes>
                  <include>**/*.template</include>
                </includes>
              </inputFiles>
              <outputDir>target/data</outputDir>
              <skip>${skip.testResources}</skip>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-external-testlib</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <includeClassifiers>testlib</includeClassifiers>
              <outputDirectory>target/data/externallib</outputDirectory>
              <overwrite>true</overwrite>
              <stripVersion>true</stripVersion>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <ignoredUsedUndeclaredDependencies combine.children="append">
            <ignoredUsedUndeclaredDependency>commons-logging:commons-logging-api:*</ignoredUsedUndeclaredDependency>
            <ignoredUsedUndeclaredDependency>org.apache.hive:hive-exec:*</ignoredUsedUndeclaredDependency>
          </ignoredUsedUndeclaredDependencies>
          <usedDependencies combine.children="append">
            <usedDependency>org.apache.hadoop:hadoop-common</usedDependency>
            <usedDependency>org.apache.asterix:asterix-fuzzyjoin</usedDependency>
          </usedDependencies>
          <ignoredUnusedDeclaredDependencies>
            <ignoredUnusedDeclaredDependency>org.apache.asterix:asterix-external-data:zip:*</ignoredUnusedDeclaredDependency>
            <ignoredUnusedDeclaredDependency>org.apache.asterix:asterix-external-data:test-jar:*</ignoredUnusedDeclaredDependency>
          </ignoredUnusedDeclaredDependencies>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <id>default</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <licenses combine.children="append">
                <license implementation="org.apache.rat.analysis.license.MITLicense" />
              </licenses>
              <excludes combine.children="append">
                <exclude>src/test/resources/**/results_parser_sqlpp/**</exclude>
                <exclude>src/test/resources/**/results/**</exclude>
                <exclude>src/test/resources/fuzzyjoin/pub/fuzzy-join-aql*.dot</exclude>
                <exclude>src/test/resources/fuzzyjoin/pub/fuzzy-join-aql*.json</exclude>
                <exclude>**/data/**</exclude>
                <exclude>src/test//resources/**/data/**</exclude>
                <exclude>src/main/resources/queryui/**</exclude>
                <exclude>src/main/resources/webui/**</exclude>
                <exclude>src/test/resources/**/only*.xml</exclude>
                <exclude>src/main/resources/sdk/**</exclude>
                <exclude>src/main/resources/dashboard/**</exclude>
              </excludes>
            </configuration>
          </execution>
          <execution>
            <id>webqueryui</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <reportFile>${project.build.directory}/webqueryui-rat.txt</reportFile>
              <licenses combine.children="append">
                <license implementation="org.apache.rat.analysis.license.MITLicense" />
                <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
                  <licenseFamilyCategory>MIT</licenseFamilyCategory>
                  <licenseFamilyName>JQuery</licenseFamilyName>
                  <patterns>(c) jQuery Foundation | jquery.org/license</patterns>
                </license>
                <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
                  <licenseFamilyCategory>MIT</licenseFamilyCategory>
                  <licenseFamilyName>Bootstrap</licenseFamilyName>
                  <patterns>Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)</patterns>
                </license>
                <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
                  <licenseFamilyCategory>MIT</licenseFamilyCategory>
                  <licenseFamilyName>AngularJS</licenseFamilyName>
                  <patterns>http://angularjs.org | (c) 2010-2016 Google, Inc. | License: MIT</patterns>
                </license>
              </licenses>
              <licenseFamilies combine.children="append">
                <licenseFamily implementation="org.apache.rat.license.MITLicenseFamily" />
                <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
                  <familyName>JQuery</familyName>
                </licenseFamily>
                <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
                  <familyName>Bootstrap</familyName>
                </licenseFamily>
                <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
                  <familyName>AngularJS</familyName>
                </licenseFamily>
              </licenseFamilies>
              <includes>
                <include>src/main/resources/queryui/**</include>
                <include>src/main/resources/webui/**</include>
              </includes>
              <excludes>src/main/resources/queryui/fonts/glyphicons-halflings-regular.svg</excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.asterix</groupId>
                    <artifactId>asterix-test-datagenerator-maven-plugin</artifactId>
                    <versionRange>[0.0,)</versionRange>
                    <goals>
                      <goal>generate-testdata</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profiles>
    <profile>
      <id>skip.asterix-app.tests</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>asterix-gerrit-asterix-app</id>
      <properties>
        <test.excludes>**/SqlppExecutionWithCancellationTest.java,**/DmlTest.java,**/RepeatedTest.java,**/SqlppExecutionTest.java</test.excludes>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>
              <execution>
                <id>SqlppExecutionTest</id>
                <configuration>
                  <includes combine.self="override">
                    <include>**/SqlppExecutionTest.java</include>
                  </includes>
                  <excludes combine.self="override"/>
                  <argLine>
                    -enableassertions -Xmx${test.heap.size}m
                    -Dfile.encoding=UTF-8
                    -Xdebug
                    -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=${debug.suspend.flag}
                    -Xloggc:"${project.build.directory}/surefire-reports/SqlppExecutionTest-%p-gc.log" -XX:+PrintGC -XX:+PrintGCDateStamps -XX:GCLogFileSize=10M
                  </argLine>
                </configuration>
                <goals>
                  <goal>test</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>asterix-gerrit-asterix-app-sql-execution</id>
      <properties>
        <test.includes/>
        <itest.includes>**/SqlppExecution*IT.java</itest.includes>
        <failIfNoTests>false</failIfNoTests>
      </properties>
    </profile>
    <profile>
      <id>asterix-gerrit-verify-asterix-app</id>
      <properties>
        <test.includes/>
        <itest.excludes>**/SqlppExecution*IT.java,**/RebalanceWithCancellationIT.java</itest.excludes>
        <failIfNoTests>false</failIfNoTests>
      </properties>
    </profile>
    <profile>
      <id>asterix-gerrit-rebalance-cancellation</id>
      <properties>
        <test.includes>**/RebalanceWithCancellationIT.java</test.includes>
      </properties>
    </profile>
  </profiles>
  <dependencies>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-control-cc</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-control-nc</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>algebricks-compiler</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-http</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-algebra</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-om</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-metadata</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-common</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-common</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-transactions</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-test-framework</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <version>1.10.19</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-replication</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-external-data</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-external-data</artifactId>
      <version>${project.version}</version>
      <type>zip</type>
      <classifier>testlib</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-external-data</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-test-support</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-api</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-dataflow-common</artifactId>
    </dependency>
    <dependency>
      <groupId>com.e-movimento.tinytools</groupId>
      <artifactId>privilegedaccessor</artifactId>
      <version>1.2.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-lang-aql</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-storage-am-lsm-btree</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>algebricks-data</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>algebricks-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-net</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-ipc</artifactId>
    </dependency>
    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>algebricks-runtime</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-lang-common</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-storage-am-lsm-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-runtime</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-storage-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>algebricks-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-lang-sqlpp</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-util</artifactId>
    </dependency>
    <dependency>
      <groupId>args4j</groupId>
      <artifactId>args4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-data-std</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-dataflow-std</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-storage-am-btree</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-control-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-storage-am-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-active</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-all</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-storage-am-lsm-btree-test</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hyracks</groupId>
      <artifactId>hyracks-comm</artifactId>
      <version>${hyracks.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-jul</artifactId>
      <version>2.10.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.asterix</groupId>
      <artifactId>asterix-fuzzyjoin</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
