<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>16</version>
  </parent>

  <groupId>org.apache.parquet</groupId>
  <artifactId>parquet</artifactId>
  <version>1.12.0</version>
  <packaging>pom</packaging>

  <name>Apache Parquet MR</name>
  <url>https://parquet.apache.org</url>
  <description>Parquet is a columnar storage format that supports nested data. This provides the java implementation.</description>

  <scm>
    <connection>scm:git:git@github.com:apache/parquet-mr.git</connection>
    <url>scm:git:git@github.com:apache/parquet-mr.git</url>
    <developerConnection>scm:git:git@github.com:apache/parquet-mr.git</developerConnection>
    <tag>apache-parquet-1.12.0-rc3</tag>
  </scm>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/PARQUET</url>
  </issueManagement>

  <mailingLists>
    <mailingList>
      <name>Dev Mailing List</name>
      <post>dev@parquet.apache.org</post>
      <subscribe>dev-subscribe@parquet.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@parquet.apache.org</unsubscribe>
    </mailingList>
    <mailingList>
      <name>Commits Mailing List</name>
      <post>commits@parquet.apache.org</post>
      <subscribe>commits-subscribe@parquet.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@parquet.apache.org</unsubscribe>
    </mailingList>
  </mailingLists>

  <repositories>
    <repository>
      <id>jitpack.io</id>
      <url>https://jitpack.io</url>
      <name>Jitpack.io repository</name>
      <!-- needed for brotli-codec -->
    </repository>
  </repositories>

  <developers>
    <developer>
      <name>Julien Le Dem</name>
      <email>julien@twitter.com</email>
    </developer>
  </developers>

  <properties>
    <targetJavaVersion>1.8</targetJavaVersion>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>${targetJavaVersion}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <github.global.server>github</github.global.server>
    <maven-jar-plugin.version>2.4</maven-jar-plugin.version>
    <jackson.groupId>com.fasterxml.jackson.core</jackson.groupId>
    <jackson.package>com.fasterxml.jackson</jackson.package>
    <jackson.version>2.11.4</jackson.version>
    <jackson-databind.version>${jackson.version}</jackson-databind.version>
    <japicmp.version>0.14.2</japicmp.version>
    <shade.prefix>shaded.parquet</shade.prefix>
    <hadoop.version>2.10.1</hadoop.version>
    <cascading.version>2.7.1</cascading.version>
    <cascading3.version>3.1.2</cascading3.version>
    <parquet.format.version>2.8.0</parquet.format.version>
    <previous.version>1.11.0</previous.version>
    <thrift.executable>thrift</thrift.executable>
    <format.thrift.executable>thrift</format.thrift.executable>
    <scala.version>2.12.8</scala.version>
    <!-- scala.binary.version is used for projects that fetch dependencies that are in scala -->
    <scala.binary.version>2.12</scala.binary.version>
    <scala.maven.test.skip>false</scala.maven.test.skip>
    <scrooge.verion>19.10.0</scrooge.verion>
    <pig.version>0.16.0</pig.version>
    <pig.classifier>h2</pig.classifier>
    <thrift-maven-plugin.version>0.10.0</thrift-maven-plugin.version>
    <thrift.version>0.13.0</thrift.version>
    <format.thrift.version>0.13.0</format.thrift.version>
    <fastutil.version>8.4.2</fastutil.version>
    <semver.api.version>0.9.33</semver.api.version>
    <slf4j.version>1.7.22</slf4j.version>
    <avro.version>1.10.1</avro.version>
    <guava.version>27.0.1-jre</guava.version>
    <brotli-codec.version>0.1.1</brotli-codec.version>
    <mockito.version>1.10.19</mockito.version>
    <net.openhft.version>0.9</net.openhft.version>
    <maven-javadoc-plugin.version>3.1.0</maven-javadoc-plugin.version>
    <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>

    <!-- parquet-cli dependencies -->
    <opencsv.version>2.3</opencsv.version>
    <jcommander.version>1.72</jcommander.version>
    <zstd-jni.version>1.4.9-1</zstd-jni.version>
    <commons-text.version>1.8</commons-text.version>

    <!-- properties for the profiles -->
    <surefire.argLine>-Xmx512m</surefire.argLine>
    <surefire.logLevel>INFO</surefire.logLevel>
  </properties>

  <modules>
    <module>parquet-arrow</module>
    <module>parquet-avro</module>
    <module>parquet-benchmarks</module>
    <module>parquet-cascading-deprecated</module>
    <module>parquet-cascading3-deprecated</module>
    <module>parquet-cli</module>
    <module>parquet-column</module>
    <module>parquet-common</module>
    <module>parquet-encoding</module>
    <module>parquet-format-structures</module>
    <module>parquet-generator</module>
    <module>parquet-hadoop</module>
    <module>parquet-jackson</module>
    <module>parquet-pig</module>
    <module>parquet-pig-bundle</module>
    <module>parquet-protobuf</module>
    <module>parquet-scala</module>
    <module>parquet-scrooge-deprecated</module>
    <module>parquet-thrift</module>
    <module>parquet-hadoop-bundle</module>
    <module>parquet-tools-deprecated</module>
  </modules>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>3.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${maven-javadoc-plugin.version}</version>
        <reportSets>
          <reportSet><!-- by default, id = "default" -->
            <reports><!-- select non-aggregate reports -->
              <report>javadoc</report>
              <report>test-javadoc</report>
            </reports>
          </reportSet>
          <reportSet><!-- aggregate reportSet, to define in poms having modules -->
            <id>aggregate</id>
            <inherited>false</inherited><!-- don't run aggregate in child modules -->
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <sourceFileExcludes>
            <sourceFileExclude>**/generated-sources/**/*.java</sourceFileExclude>
          </sourceFileExcludes>
          <source>8</source>
          <quiet>true</quiet>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.5.2</version>
        <configuration>
          <formats>
            <format>html</format>
          </formats>
          <aggregate>true</aggregate>
          <instrumentation>
            <ignores>
              <ignore>java.lang.UnsupportedOperationException.*</ignore>
            </ignores>
            <excludes>
              <exclude>parquet/Log.class</exclude>
              <exclude>**/*Exception.class</exclude>
              <exclude>parquet/example/**/*.class</exclude>
            </excludes>
          </instrumentation>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <!-- Disable the source artifact from ASF parent -->
          <artifactId>maven-assembly-plugin</artifactId>
          <executions>
            <execution>
              <id>source-release-assembly</id>
              <phase>none</phase>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>2.7</version>
        </plugin>

        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.3.1</version>
         <executions>
           <execution>
            <id>enforce-banned-dependencies</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>org.slf4j:slf4j-log4j12</exclude>
                  </excludes>
                </bannedDependencies>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
         </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.1</version>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
              <configuration>
                <minimizeJar>true</minimizeJar>
                <artifactSet>
                  <includes>
                    <include>${jackson.groupId}:*</include>
                    <include>it.unimi.dsi:fastutil</include>
                    <include>net.openhft:*</include>
                  </includes>
                </artifactSet>
                <!-- Shade jackson but do not include any class. Let parquet-jackson handle this -->
                <filters>
                  <filter>
                    <artifact>${jackson.groupId}:*</artifact>
                    <excludes>
                      <exclude>**</exclude>
                    </excludes>
                  </filter>
                </filters>
                <relocations>
                  <relocation>
                    <pattern>${jackson.package}</pattern>
                    <shadedPattern>${shade.prefix}.${jackson.package}</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>it.unimi.dsi</pattern>
                    <shadedPattern>${shade.prefix}.it.unimi.dsi</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>net.openhft</pattern>
                    <shadedPattern>${shade.prefix}.net.openhft</shadedPattern>
                  </relocation>
                </relocations>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${maven-jar-plugin.version}</version>
          <configuration>
            <archive>
              <manifestEntries>
                <git-SHA-1>${buildNumber}</git-SHA-1>
              </manifestEntries>
            </archive>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>test-jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${maven-javadoc-plugin.version}</version>
        <configuration>
          <sourceFileExcludes>
            <sourceFileExclude>**/generated-sources/**/*.java</sourceFileExclude>
          </sourceFileExcludes>
          <source>8</source>
          <quiet>true</quiet>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.mycila.maven-license-plugin</groupId>
        <artifactId>maven-license-plugin</artifactId>
        <version>1.10.b1</version>
        <configuration>
          <header>src/license.txt</header>
          <strictCheck>true</strictCheck>
        </configuration>
        <!--executions>
          <execution>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions-->
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>1.5</version>
          <configuration>
            <skip>true</skip>
          </configuration>
      </plugin>

      <plugin>
        <!-- Override source and target from the ASF parent -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <argLine>-XX:MaxPermSize=256m</argLine>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.10</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.10</version>
        <configuration>
          <argLine>${surefire.argLine}</argLine>
          <systemPropertyVariables>
            <!-- Configure Parquet logging during tests
                 See http://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html
                 -->
            <org.slf4j.simpleLogger.defaultLogLevel>${surefire.logLevel}</org.slf4j.simpleLogger.defaultLogLevel>
            <org.slf4j.simpleLogger.showDateTime>true</org.slf4j.simpleLogger.showDateTime>
            <org.slf4j.simpleLogger.dateTimeFormat>YYYY-MM-dd HH:mm:ss</org.slf4j.simpleLogger.dateTimeFormat>
            <org.slf4j.simpleLogger.showThreadName>false</org.slf4j.simpleLogger.showThreadName>
            <org.slf4j.simpleLogger.showShortLogName>true</org.slf4j.simpleLogger.showShortLogName>

            <!-- Configure log level for Hadoop -->
            <hadoop.logLevel>${surefire.logLevel}</hadoop.logLevel>
          </systemPropertyVariables>
          <excludes>
            <exclude>**/benchmark/*.java</exclude>
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
         </execution>
       </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>0.12</version>
        <executions>
          <execution>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <consoleOutput>true</consoleOutput>
          <excludes>
            <exclude>.github/PULL_REQUEST_TEMPLATE.md</exclude>
            <exclude>**/*.parquet</exclude>
            <exclude>**/*.avro</exclude>
            <exclude>**/*.json</exclude>
            <exclude>**/names.txt</exclude> <!-- parquet-cascading test data -->
            <exclude>**/*.avsc</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/*.log</exclude>
            <exclude>**/*.md.vm</exclude>
            <exclude>**/.classpath</exclude>
            <exclude>**/.project</exclude>
            <exclude>**/.settings/**</exclude>
            <exclude>**/build/**</exclude>
            <exclude>**/target/**</exclude>
            <exclude>.git/**</exclude>
            <exclude>.gitignore</exclude>
            <exclude>.gitmodules</exclude>
            <exclude>.idea/**</exclude>
            <exclude>*/jdiff/*.xml</exclude>
            <exclude>licenses/**</exclude>
            <exclude>protobuf_install/**</exclude>
            <exclude>thrift-${thrift.version}/**</exclude>
            <exclude>thrift-${thrift.version}.tar.gz</exclude>
            <exclude>**/dependency-reduced-pom.xml</exclude>
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.github.siom79.japicmp</groupId>
        <artifactId>japicmp-maven-plugin</artifactId>
        <version>${japicmp.version}</version>
        <configuration>
          <parameter>
            <oldVersionPattern>${previous.version}</oldVersionPattern>
            <breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
            <onlyModified>true</onlyModified>
            <overrideCompatibilityChangeParameters>
              <!-- Adding a new method with default implementation to an interface should be a compatible change.
                That's why they invented it. -->
              <overrideCompatibilityChangeParameter>
                <compatibilityChange>METHOD_NEW_DEFAULT</compatibilityChange>
                <semanticVersionLevel>MINOR</semanticVersionLevel>
                <binaryCompatible>true</binaryCompatible>
                <sourceCompatible>true</sourceCompatible>
              </overrideCompatibilityChangeParameter>
            </overrideCompatibilityChangeParameters>
            <excludeModules>
              <!-- Excluding the following modules because they are not part of the parquet public API -->
              <excludeModule>parquet-benchmarks</excludeModule>
              <excludeModule>parquet-cli</excludeModule>
              <excludeModule>parquet-tools-deprecated</excludeModule>
              <excludeModule>parquet-format-structures</excludeModule>

              <!-- Excluding the following modules because bundles do not contain any java classes while they still fail the
                compatibility check because of missing dependencies -->
              <excludeModule>parquet-hadoop-bundle</excludeModule>
              <excludeModule>parquet-pig-bundle</excludeModule>
            </excludeModules>
            <excludes>
              <exclude>${shade.prefix}</exclude>
            </excludes>
          </parameter>
        </configuration>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>cmp</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>update-github-site</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>2.7</version>
            <reportSets>
              <reportSet>
                <reports>
                  <report>index</report>
                  <report>mailing-list</report>
                  <report>dependency-info</report>
                  <report>project-team</report>
                  <report>dependencies</report>
                  <report>license</report>
                  <report>scm</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
      <distributionManagement>
        <site>
          <id>github-pages-site</id>
          <name>Deployment through GitHub's site deployment plugin</name>
          <url>site/${project.version}</url>
        </site>
      </distributionManagement>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.3</version>
            <configuration>
              <skipDeploy>true</skipDeploy>
            </configuration>
          </plugin>
          <plugin>
            <groupId>com.github.github</groupId>
            <artifactId>site-maven-plugin</artifactId>
            <version>0.8</version>
            <configuration>
              <message>Creating site for ${project.version}</message>
              <path>${project.distributionManagement.site.url}</path>
              <merge>true</merge>
            </configuration>
            <executions>
              <execution>
                <id>github-site</id>
                <goals>
                  <goal>site</goal>
                </goals>
                <phase>site-deploy</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>thrift9</id>
      <properties>
        <thrift.version>0.9.0</thrift.version>
      </properties>
    </profile>

    <!-- Profile for CI tests to have less output -->
    <profile>
      <id>ci-test</id>
      <properties>
        <surefire.logLevel>WARN</surefire.logLevel>
        <surefire.argLine>-Xmx512m -XX:MaxJavaStackTraceDepth=10</surefire.argLine>
      </properties>
    </profile>

    <profile>
      <id>jdk9+</id>
      <activation>
        <jdk>[1.9,)</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <release>8</release>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
