<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>
  <groupId>au.csiro.aehrc.variant-spark</groupId>
  <artifactId>variant-spark_2.11</artifactId>
  <version>0.5.0-a0-dev4</version>
  <packaging>jar</packaging>

  <name>variant-spark</name>
  <description>Genomic variants interpretation toolkit</description>
  <url>http://bioinformatics.csiro.au/variantspark</url>
  <licenses>
    <license>
      <name>CSIRO Non-Commercial Source Code Licence Agreement v1.0</name>
      <url>https://raw.githubusercontent.com/aehrc/VariantSpark/master/LICENSE</url>
    </license>
  </licenses>
  <inceptionYear>2014</inceptionYear>

  <developers>
    <developer>
      <name>Denis Bauer</name>
      <email>denis.bauer@csiro.au</email>
      <organization>CSIRO eHealth</organization>
      <organizationUrl>https://aehrc.com</organizationUrl>
    </developer>
    <developer>
      <name>Piotr Szul</name>
      <email>piotr.szul@data61.csiro.au</email>
      <organization>CSIRO Data61</organization>
      <organizationUrl>http://www.data61.csiro.au/</organizationUrl>
    </developer>
    <developer>
      <name>Aidan O’Brien</name>
      <email>aidan.o’brien@csiro.au</email>
      <organization>CSIRO eHealth</organization>
      <organizationUrl>https://aehrc.com</organizationUrl>
    </developer>
    <developer>
      <name>Oscar Luo</name>
      <email>Oscar.luo@csiro.au</email>
      <organization>CSIRO eHealth</organization>
      <organizationUrl>https://aehrc.com</organizationUrl>
    </developer>
    <developer>
      <name>Robert Dunne</name>
      <email>Rob.Dunne@data61.csiro.au</email>
      <organization>CSIRO eHealth</organization>
      <organizationUrl>http://www.data61.csiro.au/</organizationUrl>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:git://github.com/aehrc/VariantSpark.git</connection>
    <developerConnection>scm:git:ssh://github.com:aehrc/VariantSpark.git</developerConnection>
    <url>https://github.com/aehrc/VariantSpark</url>
  </scm>


  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <!-- The release repository is define in the `nexus-staging-maven-plugin` -->
  </distributionManagement>

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <encoding>UTF-8</encoding>
    <scala.binary.version>2.12</scala.binary.version>
    <scala.version>2.12.14</scala.version>
    <spark.version>3.1.2</spark.version>
    <spark.binary.version>3.1</spark.binary.version>
    <scalafmt.parameters>--test</scalafmt.parameters>
    <!-- for now, not running scalafmt as part of default verify pipeline -->
    <scalafmt.skip>false</scalafmt.skip>
    <scalafmt.validateOnly>true</scalafmt.validateOnly>
    <scalafmt.onlyChangedFiles>false</scalafmt.onlyChangedFiles>
    <sonata.autorelease>false</sonata.autorelease>
    <CodeCacheSize>1g</CodeCacheSize>
    <hail.version>0.2.74</hail.version>
    <skipTests>false</skipTests>
    <build.type>devel</build.type>
  </properties>

  <repositories>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_${scala.binary.version}</artifactId>
      <version>${spark.version}</version>
      <scope>provided</scope>
      <exclusions>
        <exclusion>
          <groupId>org.tachyonproject</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-mllib_${scala.binary.version}</artifactId>
      <version>${spark.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.scala-graph</groupId>
      <artifactId>graph-core_${scala.binary.version}</artifactId>
      <version>1.12.3</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>it.unimi.dsi</groupId>
      <artifactId>fastutil</artifactId>
      <version>7.0.8</version>
    </dependency>
    <dependency>
      <groupId>com.github.tototoshi</groupId>
      <artifactId>scala-csv_${scala.binary.version}</artifactId>
      <version>1.3.8</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.github.samtools/htsjdk -->
    <dependency>
      <groupId>com.github.samtools</groupId>
      <artifactId>htsjdk</artifactId>
      <version>2.21.0</version>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.7</version>
    </dependency>
    <dependency>
      <groupId>args4j</groupId>
      <artifactId>args4j</artifactId>
      <version>2.0.29</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.json4s/json4s -->
    <!--  dependency>
        <groupId>org.json4s</groupId>
        <artifactId>json4s_${scala.binary.version}</artifactId>
        <version>3.2.11</version>
    </dependency-->
    <!-- https://mvnrepository.com/artifact/org.json4s/json4s-ext -->
    <dependency>
      <groupId>org.json4s</groupId>
      <artifactId>json4s-ext_${scala.binary.version}</artifactId>
      <version>3.5.3</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/it.unimi.dsi/dsiutils -->
    <dependency>
      <groupId>it.unimi.dsi</groupId>
      <artifactId>dsiutils</artifactId>
      <version>2.3.3</version>
      <exclusions>
        <exclusion>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
        </exclusion>
        <!-- confilits with an older version of guava shipped with hadoop -->
        <exclusion>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>3.5.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm</artifactId>
      <version>5.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm-util</artifactId>
      <version>5.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm-analysis</artifactId>
      <version>5.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>au.csiro.aehrc.third.hail-is</groupId>
      <artifactId>hail_${scala.binary.version}_${spark.binary.version}</artifactId>
      <version>${hail.version}-SNAPSHOT</version>
      <!--classifier>all</classifier-->
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>au.csiro.aehrc.third.hail-is</groupId>
      <artifactId>hail_${scala.binary.version}_${spark.binary.version}</artifactId>
      <version>${hail.version}-SNAPSHOT</version>
      <classifier>all</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-csv</artifactId>
      <version>1.9.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <version>4.0.3</version>
        <executions>
          <execution>
            <id>get-the-git-infos</id>
            <goals>
              <goal>revision</goal>
            </goals>
            <phase>initialize</phase>
          </execution>
        </executions>
        <configuration>
          <generateGitPropertiesFile>true</generateGitPropertiesFile>
          <generateGitPropertiesFilename>
            ${project.build.outputDirectory}/variant-spark.git.properties
          </generateGitPropertiesFilename>
          <commitIdGenerationMode>full</commitIdGenerationMode>
        </configuration>
      </plugin>
      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>4.4.0</version>
        <executions>
          <execution>
            <id>add-scala-source</id>
            <goals>
              <goal>add-source</goal>
            </goals>
          </execution>
          <execution>
            <id>scala-compile-first</id>
            <phase>process-resources</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
          <execution>
            <id>scala-test-compile</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
          </execution>
          <execution>
            <id>attach-scaladocs</id>
            <phase>verify</phase>
            <goals>
              <goal>doc-jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <scalaVersion>${scala.version}</scalaVersion>
          <checkMultipleScalaVersions>true</checkMultipleScalaVersions>
          <failOnMultipleScalaVersions>true</failOnMultipleScalaVersions>
          <recompileMode>incremental</recompileMode>
          <useZincServer>true</useZincServer>
          <args>
            <arg>-unchecked</arg>
            <!--arg>-deprecation</arg-->
            <arg>-feature</arg>
            <arg>-explaintypes</arg>
            <arg>-target:jvm-1.8</arg>
            <arg>-language:implicitConversions</arg>
          </args>
          <jvmArgs>
            <jvmArg>-Xms1024m</jvmArg>
            <jvmArg>-Xmx1024m</jvmArg>
            <jvmArg>-XX:ReservedCodeCacheSize=${CodeCacheSize}</jvmArg>
          </jvmArgs>
          <javacArgs>
            <javacArg>-source</javacArg>
            <javacArg>${java.version}</javacArg>
            <javacArg>-target</javacArg>
            <javacArg>${java.version}</javacArg>
            <javacArg>-Xlint:all,-serial,-path,-try</javacArg>
          </javacArgs>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20</version>
        <configuration>
          <skipTests>${skipTests}</skipTests>
          <useFile>false</useFile>
          <disableXmlReport>true</disableXmlReport>
          <includes>
            <include>!test/**/*Test</include>
          </includes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <shadedArtifactAttached>true</shadedArtifactAttached>
          <shadedClassifierName>all</shadedClassifierName>
          <filters>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
              </excludes>
            </filter>
          </filters>
          <transformers>
            <transformer
              implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
          </transformers>
          <relocations>
            <relocation>
              <!-- Relocate fastutils due to a conflict with an older version used with hail 0.2.61
                fastutils:6.2.2  from com.indeed.lsmtree-core: 1.0.7=-->
              <pattern>it.unimi.dsi.fastutil</pattern>
              <shadedPattern>it.shaded.dsi.fastutil</shadedPattern>
            </relocation>
          </relocations>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.antipathy</groupId>
        <artifactId>mvn-scalafmt_${scala.binary.version}</artifactId>
        <version>1.0.3</version>
        <configuration>
          <skipSources>${scalafmt.skip}</skipSources>
          <skipTestSources>${scalafmt.skip}</skipTestSources>
          <configLocation>${project.basedir}/.scalafmt.conf
          </configLocation> <!-- (Optional) config location -->
          <onlyChangedFiles>${scalafmt.onlyChangedFiles}</onlyChangedFiles>
          <validateOnly>${scalafmt.validateOnly}</validateOnly>
        </configuration>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>format</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.scalastyle</groupId>
        <artifactId>scalastyle-maven-plugin</artifactId>
        <version>1.0.0</version>
        <configuration>
          <verbose>false</verbose>
          <failOnViolation>true</failOnViolation>
          <includeTestSourceDirectory>false</includeTestSourceDirectory>
          <failOnWarning>false</failOnWarning>
          <sourceDirectory>${basedir}/src/main/scala</sourceDirectory>
          <testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory>
          <configLocation>scalastyle-config.xml</configLocation>
          <outputFile>${basedir}/target/scalastyle-output.xml</outputFile>
          <outputEncoding>UTF-8</outputEncoding>
        </configuration>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </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>
                      net.alchim31.maven
                    </groupId>
                    <artifactId>
                      scala-maven-plugin
                    </artifactId>
                    <versionRange>
                      [3.2.2,)
                    </versionRange>
                    <goals>
                      <goal>compile</goal>
                      <goal>testCompile</goal>
                      <goal>add-source</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profiles>
    <profile>
      <id>release</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <attach>true</attach>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>1.6.13</version>
            <extensions>true</extensions>
            <configuration>
              <serverId>ossrh</serverId>
              <nexusUrl>https://oss.sonatype.org/</nexusUrl>
              <autoReleaseAfterClose>${sonata.autorelease}</autoReleaseAfterClose>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>scala_2.10</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <scala.binary.version>2.10</scala.binary.version>
        <scala.version>2.10.6</scala.version>
      </properties>
    </profile>
    <profile>
      <id>cdh5.8.2</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>cloudera</id>
          <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
      </repositories>
      <properties>
        <spark.version>1.6.0-cdh5.8.2</spark.version>
      </properties>
      <dependencies>
        <!-- https://mvnrepository.com/artifact/org.xerial.snappy/snappy-java -->
        <dependency>
          <groupId>org.xerial.snappy</groupId>
          <artifactId>snappy-java</artifactId>
          <version>1.1.2.6</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>cdh5.9.0</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>cloudera</id>
          <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
      </repositories>
      <properties>
        <spark.version>1.6.0-cdh5.9.0</spark.version>
      </properties>
      <dependencies>
        <!-- https://mvnrepository.com/artifact/org.xerial.snappy/snappy-java -->
        <dependency>
          <groupId>org.xerial.snappy</groupId>
          <artifactId>snappy-java</artifactId>
          <version>1.1.2.6</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>no-perf</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
              <skipTests>${skipTests}</skipTests>
              <useFile>false</useFile>
              <disableXmlReport>true</disableXmlReport>
              <excludes>
                <exclude>**/*PerfTest</exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>slow-test</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <executions>
              <execution>
                <id>slow</id>
                <configuration>
                  <includes>
                    <include>test/stats/*Test</include>
                  </includes>
                </configuration>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>regression-test</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <property>
          <name>build.type</name>
          <value>release</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <executions>
              <execution>
                <id>regression</id>
                <configuration>
                  <includes>
                    <include>test/regression/*Test</include>
                  </includes>
                </configuration>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
