<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2013 Google Inc.
  ~
  ~ Licensed 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.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>7</version>
  </parent>

  <groupId>com.google.jimfs</groupId>
  <artifactId>jimfs-parent</artifactId>
  <packaging>pom</packaging>
  <version>HEAD-SNAPSHOT</version>

  <modules>
    <module>jimfs</module>
  </modules>

  <name>Jimfs Parent</name>

  <description>
    Jimfs is an in-memory implementation of Java 7's java.nio.file abstract file system API.
  </description>

  <url>https://github.com/google/jimfs</url>

  <inceptionYear>2013</inceptionYear>

  <organization>
    <name>Google Inc.</name>
    <url>http://www.google.com/</url>
  </organization>

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

  <developers>
    <developer>
      <id>cgdecker</id>
      <name>Colin Decker</name>
      <email>cgdecker@google.com</email>
      <organization>Google Inc.</organization>
      <organizationUrl>http://www.google.com/</organizationUrl>
      <roles>
        <role>owner</role>
        <role>developer</role>
      </roles>
      <timezone>-5</timezone>
    </developer>
  </developers>

  <scm>
    <url>http://github.com/google/jimfs/</url>
    <connection>scm:git:git://github.com/google/jimfs.git</connection>
    <developerConnection>scm:git:ssh://git@github.com/google/jimfs.git</developerConnection>
    <tag>HEAD</tag>
  </scm>

  <issueManagement>
    <system>GitHub Issues</system>
    <url>http://github.com/google/jimfs/issues</url>
  </issueManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <auto-service.version>1.0-rc6</auto-service.version>
    <java.version>1.7</java.version>
    <guava.version>27.0.1-android</guava.version>
    <surefire.version>3.0.0-M3</surefire.version>
    <!--
      NOTE: When updating errorprone.version, also update javac.version to the
      version used by the new error-prone version. You should be able to find
      it in the properties section of
      https://github.com/google/error-prone/blob/v${errorprone.version}/pom.xml
      -->
    <errorprone.version>2.3.3</errorprone.version>
    <javac.version>9+181-r4173-1</javac.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!-- Required runtime dependencies -->
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>

      <!-- Optional runtime dependencies -->
      <dependency>
        <groupId>com.ibm.icu</groupId>
        <artifactId>icu4j</artifactId>
        <version>65.1</version>
      </dependency>

      <!-- Compile-time dependencies -->
      <dependency>
        <groupId>com.google.auto.service</groupId>
        <artifactId>auto-service-annotations</artifactId>
        <version>${auto-service.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
      </dependency>
      <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>checker-compat-qual</artifactId>
        <version>2.5.5</version>
      </dependency>

      <!-- Test dependencies -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava-testlib</artifactId>
        <version>${guava.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.google.truth</groupId>
        <artifactId>truth</artifactId>
        <version>0.45</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <debug>true</debug>
            <encoding>UTF-8</encoding>
            <docencoding>UTF-8</docencoding>
            <charset>UTF-8</charset>
            <detectJavaApiLink>false</detectJavaApiLink>
            <links>
              <link>https://checkerframework.org/api/</link>
              <link>https://guava.dev/releases/${guava.version}/api/docs/</link>
              <link>https://unicode-org.github.io/icu-docs/apidoc/released/icu4j</link>
              <!-- When building against Java 8, the Java 11 link below is overridden to point to an older version (Java 9, the newest one that works). -->
              <link>https://docs.oracle.com/en/java/javase/11/docs/api/</link>
            </links>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.6</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire.version}</version>
          <!-- For some reason, we need this for our internal tests that run in offline mode: -->
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.surefire</groupId>
              <artifactId>surefire-junit4</artifactId>
              <version>${surefire.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
          <compilerArgs>
            <arg>-XDcompilePolicy=simple</arg>
            <arg>-Xplugin:ErrorProne</arg>
          </compilerArgs>
          <annotationProcessorPaths>
            <path>
              <groupId>com.google.errorprone</groupId>
              <artifactId>error_prone_core</artifactId>
              <version>${errorprone.version}</version>
            </path>
            <path>
              <groupId>com.google.guava</groupId>
              <artifactId>guava-beta-checker</artifactId>
              <version>1.0</version>
            </path>
            <path>
              <groupId>com.google.auto.service</groupId>
              <artifactId>auto-service</artifactId>
              <version>${auto-service.version}</version>
            </path>
          </annotationProcessorPaths>
        </configuration>
        <executions>
          <execution>
            <id>default-testCompile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <compilerArgs>
                <arg>-XDcompilePolicy=simple</arg>
                <arg>-Xplugin:ErrorProne -Xep:BetaApi:OFF</arg> <!-- Disable Beta Checker for tests -->
              </compilerArgs>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>jdk8plus</id>
      <activation>
        <jdk>[1.8,)</jdk>
      </activation>
      <!-- Disable HTML checking in doclint under JDK 8 and higher -->
      <reporting>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <additionalOptions>
                <additionalOption>-Xdoclint:none</additionalOption>
              </additionalOptions>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <additionalOptions>
                <additionalOption>-Xdoclint:none</additionalOption>
              </additionalOptions>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- https://errorprone.info/docs/installation#maven -->
    <!-- using github.com/google/error-prone-javac is required when running on JDK 8 -->
    <profile>
      <id>jdk8exactly</id>
      <activation>
        <jdk>1.8</jdk>
      </activation>
      <reporting>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <links>
                <link>https://checkerframework.org/api/</link>
                <link>https://guava.dev/releases/${guava.version}/api/docs/</link>
                <link>https://unicode-org.github.io/icu-docs/apidoc/released/icu4j</link>
                <link>https://docs.oracle.com/javase/9/docs/api/</link>
              </links>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
      <build>
        <plugins>
          <!-- https://errorprone.info/docs/installation#maven -->
          <!-- using github.com/google/error-prone-javac is required when running on JDK 8 -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <fork>true</fork>
              <compilerArgs combine.children="append">
                <arg>-J-Xbootclasspath/p:${settings.localRepository}/com/google/errorprone/javac/${javac.version}/javac-${javac.version}.jar</arg>
              </compilerArgs>
            </configuration>
          </plugin>

          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <links>
                <link>https://checkerframework.org/api/</link>
                <link>https://guava.dev/releases/${guava.version}/api/docs/</link>
                <link>https://unicode-org.github.io/icu-docs/apidoc/released/icu4j</link>
                <link>https://docs.oracle.com/javase/9/docs/api/</link>
              </links>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
