<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright © 2018-2025 Commonwealth Scientific and Industrial Research
  ~ Organisation (CSIRO) ABN 41 687 119 230.
  ~
  ~ 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>
  <groupId>au.csiro.pathling</groupId>
  <artifactId>pathling</artifactId>
  <version>9.2.0</version>
  <packaging>pom</packaging>

  <name>Pathling</name>
  <description>
    A set of tools that make it easier to use FHIR® within data analytics, built on Apache Spark.
  </description>
  <url>https://pathling.csiro.au</url>

  <developers>
    <developer>
      <name>John Grimes</name>
      <email>John.Grimes@csiro.au</email>
      <url>https://github.com/johngrimes</url>
    </developer>
    <developer>
      <name>Piotr Szul</name>
      <email>Piotr.Szul@csiro.au</email>
      <url>https://github.com/piotrszul</url>
    </developer>
  </developers>

  <organization>
    <name>Australian e-Health Research Centre, CSIRO</name>
    <url>https://aehrc.csiro.au</url>
  </organization>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
  </licenses>

  <scm>
    <url>https://github.com/aehrc/pathling</url>
    <developerConnection>scm:git:https://github.com/aehrc/pathling.git</developerConnection>
  </scm>
  <issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/aehrc/pathling/issues</url>
  </issueManagement>
  <ciManagement>
    <system>GitHub Actions</system>
    <url>https://github.com/aehrc/pathling/actions</url>
  </ciManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <pathling.sparkVersion>4.0.1</pathling.sparkVersion>
    <pathling.scalaVersion>2.13</pathling.scalaVersion>
    <pathling.scalaFullVersion>2.13.15</pathling.scalaFullVersion>
    <pathling.deltaVersion>4.0.0</pathling.deltaVersion>
    <pathling.hadoopVersion>3.4.1</pathling.hadoopVersion>
    <pathling.hadoopMajorVersion>3</pathling.hadoopMajorVersion>
    <pathling.hapiFhirVersion>8.6.0</pathling.hapiFhirVersion>
    <pathling.antlrVersion>4.13.1</pathling.antlrVersion>
    <pathling.lombokVersion>1.18.38</pathling.lombokVersion>
    <pathling.infinispanVersion>15.0.3.Final</pathling.infinispanVersion>
    <pathling.jacksonVersion>2.16.1</pathling.jacksonVersion>
    <pathling.jerseyVersion>3.1.11</pathling.jerseyVersion>
    <pathling.surefireVersion>3.2.5</pathling.surefireVersion>
    <pathling.logbackVersion>1.5.19</pathling.logbackVersion>
    <pathling.slf4jVersion>2.0.17</pathling.slf4jVersion>
    <pathling.derbyVersion>10.16.1.1</pathling.derbyVersion>
    <pathling.bulkExportVersion>1.0.4</pathling.bulkExportVersion>
    <pathling.fhirAuthVersion>1.0.0</pathling.fhirAuthVersion>
  </properties>

  <modules>
    <module>utilities</module>
    <module>encoders</module>
    <module>terminology</module>
    <module>fhirpath</module>
    <module>library-api</module>
    <module>library-runtime</module>
    <module>lib/python</module>
    <module>lib/R</module>
    <module>site</module>
    <module>benchmark</module>
  </modules>

  <repositories>
    <!-- Required for resolving SNAPSHOT dependencies from Maven Central. -->
    <repository>
      <id>central-snapshots</id>
      <url>https://central.sonatype.com/repository/maven-snapshots/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>encoders</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>encoders</artifactId>
        <version>${project.version}</version>
        <classifier>sources</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>encoders</artifactId>
        <version>${project.version}</version>
        <classifier>javadoc</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>encoders</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>terminology</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>terminology</artifactId>
        <version>${project.version}</version>
        <classifier>sources</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>terminology</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>fhirpath</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>fhirpath</artifactId>
        <version>${project.version}</version>
        <classifier>sources</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>fhirpath</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>library-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>library-api</artifactId>
        <version>${project.version}</version>
        <classifier>sources</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>library-api</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>library-api</artifactId>
        <version>${project.version}</version>
        <classifier>javadoc</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>library-runtime</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>utilities</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>utilities</artifactId>
        <version>${project.version}</version>
        <classifier>sources</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>utilities</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>python</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>python</artifactId>
        <version>${project.version}</version>
        <classifier>docs</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>r</artifactId>
        <version>${project.version}</version>
        <classifier>docs</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.fhir</groupId>
        <artifactId>bulk-export</artifactId>
        <version>${pathling.bulkExportVersion}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.fhir</groupId>
        <artifactId>bulk-export</artifactId>
        <version>${pathling.bulkExportVersion}</version>
        <classifier>sources</classifier>
      </dependency>
      <dependency>
        <groupId>au.csiro.fhir</groupId>
        <artifactId>fhir-auth</artifactId>
        <version>${pathling.fhirAuthVersion}</version>
      </dependency>
      <!-- Ensure that consistent and correct versions of Jackson and Jersey are used. -->
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${pathling.jacksonVersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jersey</groupId>
        <artifactId>jersey-bom</artifactId>
        <version>${pathling.jerseyVersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!-- Apache Spark -->
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_${pathling.scalaVersion}</artifactId>
        <version>${pathling.sparkVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_${pathling.scalaVersion}</artifactId>
        <version>${pathling.sparkVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-catalyst_${pathling.scalaVersion}</artifactId>
        <version>${pathling.sparkVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_${pathling.scalaVersion}</artifactId>
        <version>${pathling.sparkVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-unsafe_${pathling.scalaVersion}</artifactId>
        <version>${pathling.sparkVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-kubernetes_${pathling.scalaVersion}</artifactId>
        <version>${pathling.sparkVersion}</version>
      </dependency>
      <dependency>
        <groupId>io.delta</groupId>
        <artifactId>delta-spark_${pathling.scalaVersion}</artifactId>
        <version>${pathling.deltaVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client-api</artifactId>
        <version>${pathling.hadoopVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client-runtime</artifactId>
        <version>${pathling.hadoopVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-aws</artifactId>
        <version>${pathling.hadoopVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-client</artifactId>
        <version>5.6.0</version>
      </dependency>
      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${pathling.scalaFullVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>${pathling.derbyVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derbytools</artifactId>
        <version>${pathling.derbyVersion}</version>
      </dependency>
      <!-- This is required for Spark UI, which still has some expectations that a legacy 
      jakarta.servlet API is present -->
      <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>5.0.0</version>
        <scope>runtime</scope>
      </dependency>

      <!-- HAPI FHIR -->
      <dependency>
        <groupId>ca.uhn.hapi.fhir</groupId>
        <artifactId>hapi-fhir-bom</artifactId>
        <version>${pathling.hapiFhirVersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- Woodstox is used by HAPI for XML processing -->
      <dependency>
        <groupId>com.fasterxml.woodstox</groupId>
        <artifactId>woodstox-core</artifactId>
        <version>6.4.0</version>
      </dependency>

      <!-- ANTLR -->
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4</artifactId>
        <version>${pathling.antlrVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>com.ibm.icu</groupId>
            <artifactId>icu4j</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-runtime</artifactId>
        <version>${pathling.antlrVersion}</version>
      </dependency>

      <!-- Error monitoring -->
      <dependency>
        <groupId>io.sentry</groupId>
        <artifactId>sentry</artifactId>
        <version>6.6.0</version>
      </dependency>

      <!-- JSR-380 Validation RI -->
      <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>8.0.1.Final</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!-- Testing -->
      <dependency>
        <groupId>org.skyscreamer</groupId>
        <artifactId>jsonassert</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.github.tomakehurst</groupId>
        <artifactId>wiremock-jre8-standalone</artifactId>
        <version>2.35.2</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>4.2.0</version>
        <scope>test</scope>
      </dependency>

      <!-- Lombok -->
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${pathling.lombokVersion}</version>
        <scope>provided</scope>
      </dependency>

      <!-- Misc -->
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.10</version>
      </dependency>
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.12.7</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
      </dependency>
      <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20240303</version>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.11.0</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.16.1</version>
      </dependency>
      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-bom</artifactId>
        <version>${pathling.infinispanVersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${pathling.slf4jVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>${pathling.slf4jVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${pathling.slf4jVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${pathling.slf4jVersion}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${pathling.logbackVersion}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${pathling.logbackVersion}</version>
      </dependency>

      <!-- CVE-2025-48924 -->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.18.0</version>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
          <execution>
            <id>parse-version</id>
            <goals>
              <goal>parse-version</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.basepom.maven</groupId>
        <artifactId>duplicate-finder-maven-plugin</artifactId>
        <version>1.5.1</version>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <attach>true</attach>
              <classifier>sources</classifier>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
            <phase>compile</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
            <phase>compile</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
          <configuration>
            <source>21</source>
            <target>21</target>
            <compilerArgs>
              <arg>-Xlint:all,-processing,-this-escape</arg>
              <arg>-proc:full</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <version>4.9.1</version>
          <executions>
            <execution>
              <id>scala-compile-first</id>
              <phase>process-resources</phase>
              <goals>
                <goal>add-source</goal>
                <goal>compile</goal>
              </goals>
            </execution>
            <execution>
              <id>scala-test-compile</id>
              <phase>process-test-resources</phase>
              <goals>
                <goal>testCompile</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <source>21</source>
            <target>21</target>
            <args>
              <arg>-feature</arg>
              <arg>-deprecation</arg>
            </args>
            <javacArgs>
              <javacArg>-proc:full</javacArg>
            </javacArgs>
            <scalaVersion>${pathling.scalaFullVersion}</scalaVersion>
          </configuration>
        </plugin>
        <plugin>
          <groupId>io.github.git-commit-id</groupId>
          <artifactId>git-commit-id-maven-plugin</artifactId>
          <version>9.0.2</version>
          <executions>
            <execution>
              <goals>
                <goal>revision</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <verbose>false</verbose>
            <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
            <generateGitPropertiesFile>true</generateGitPropertiesFile>
            <generateGitPropertiesFilename>${project.build.outputDirectory}/pathling-version.properties</generateGitPropertiesFilename>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${pathling.surefireVersion}</version>
          <configuration>
            <useSystemClassLoader>true</useSystemClassLoader>
            <useManifestOnlyJar>false</useManifestOnlyJar>
            <!-- The add-exports and add-opens flags are required for Java 21 -->
            <!-- -XX:+EnableDynamicAgentLoading suppresses warnings about Mockito's dynamic agent loading -->
            <argLine>@{argLine} -Xshare:off -Xmx4g -ea -Duser.timezone=UTC -XX:+EnableDynamicAgentLoading --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED</argLine>
            <forkCount>1C</forkCount>
            <failIfNoTests>false</failIfNoTests>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${pathling.surefireVersion}</version>
          <configuration>
            <!-- The add-exports and add-opens flags are required for Java 21 -->
            <argLine>-Xmx4g -ea -Duser.timezone=UTC --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED</argLine>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.spotify</groupId>
          <artifactId>dockerfile-maven-plugin</artifactId>
          <version>1.4.13</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>2.0.0</version>
          <executions>
            <execution>
              <id>add-third-party</id>
              <goals>
                <goal>add-third-party</goal>
              </goals>
              <configuration>
                <useMissingFile>true</useMissingFile>
                <acceptPomPackaging>true</acceptPomPackaging>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.12</version>
          <executions>
            <execution>
              <id>prepare-agent</id>
              <goals>
                <goal>prepare-agent</goal>
              </goals>
            </execution>
            <execution>
              <id>report</id>
              <goals>
                <goal>report</goal>
              </goals>
            </execution>
            <execution>
              <id>report-aggregate</id>
              <phase>verify</phase>
              <goals>
                <goal>report-aggregate</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.11.2</version>
          <executions>
            <execution>
              <id>javadoc</id>
              <phase>prepare-package</phase>
              <goals>
                <goal>javadoc</goal>
              </goals>
            </execution>
            <execution>
              <id>javadoc-jar</id>
              <phase>prepare-package</phase>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <skip>true</skip>
            <source>21</source>
            <links>
              <link>https://spark.apache.org/docs/latest/api/java/</link>
              <link>https://hapifhir.io/hapi-fhir/apidocs/hapi-fhir-base/</link>
              <link>https://hapifhir.io/hapi-fhir/apidocs/hapi-fhir-structures-r4/</link>
              <link>https://hapifhir.io/hapi-fhir/apidocs/hapi-fhir-client/</link>
              <link>https://hapifhir.io/hapi-fhir/apidocs/hapi-fhir-server/</link>
            </links>
            <detectLinks/>
            <doctitle>Pathling ${project.version} API</doctitle>
            <windowtitle>Pathling ${project.version} API</windowtitle>
            <excludePackageNames>au.csiro.pathling.fhirpath.parser.generated:au.csiro.pathling.views.ansi.generated</excludePackageNames>
            <bottom>
              <![CDATA[This content is dedicated to the public domain via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0<a>.]]>
            </bottom>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.2.4</version>
          <executions>
            <execution>
              <id>sign</id>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <keyname>pathling@csiro.au</keyname>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.sonatype.central</groupId>
          <artifactId>central-publishing-maven-plugin</artifactId>
          <version>0.8.0</version>
          <extensions>true</extensions>
          <configuration>
            <publishingServerId>central</publishingServerId>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>com.sun.jersey</groupId>
              <artifactId>jersey-core</artifactId>
              <version>1.19.4</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.2</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.5.3</version>
          <configuration>
            <filters>
              <filter>
                <artifact>au.csiro.pathling:${project.artifactId}</artifact>
                <excludes>
                  <exclude>META-INF/**</exclude>
                </excludes>
              </filter>
            </filters>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.6.1</version>
          <goals>
            <goal>analyze-only</goal>
          </goals>
          <configuration>
            <ignoredDependencies>
              <ignoredDependency>org.projectlombok:lombok</ignoredDependency>
              <ignoredDependency>au.csiro.pathling:*:test-jar</ignoredDependency>
            </ignoredDependencies>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>${pathling.springBootVersion}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.4.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.3.2</version>
          <configuration>
            <filesets>
              <fileset>
                <directory>${project.basedir}</directory>
                <includes>
                  <include>**/spark-warehouse/**</include>
                  <include>**/metastore_db/**</include>
                  <include>**/.ipynb_checkpoints/**</include>
                  <include>**/node_modules/**</include>
                  <include>**/derby.log</include>
                </includes>
              </fileset>
            </filesets>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <groupId>com.diffplug.spotless</groupId>
          <artifactId>spotless-maven-plugin</artifactId>
          <version>2.44.5</version>
          <configuration>
            <java>
              <googleJavaFormat>
                <version>1.27.0</version>
                <style>GOOGLE</style>
                <reflowLongStrings>true</reflowLongStrings>
                <formatJavadoc>true</formatJavadoc>
              </googleJavaFormat>
            </java>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.6.0</version>
          <configuration>
            <configLocation>config/checkstyle/checkstyle.xml</configLocation>
            <suppressionsLocation>config/checkstyle/suppressions.xml</suppressionsLocation>
            <includeTestSourceDirectory>false</includeTestSourceDirectory>
            <consoleOutput>true</consoleOutput>
            <failsOnError>true</failsOnError>
            <failOnViolation>true</failOnViolation>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>10.21.4</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>docs</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <skip>false</skip>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>mavenRelease</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.sonatype.central</groupId>
            <artifactId>central-publishing-maven-plugin</artifactId>
            <configuration>
              <autoPublish>true</autoPublish>
              <ignorePublishedComponents>true</ignorePublishedComponents>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>snapshots</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>mavenPreRelease</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.sonatype.central</groupId>
            <artifactId>central-publishing-maven-plugin</artifactId>
            <configuration>
              <autoPublish>false</autoPublish>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>releases</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>licenses</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <configuration>
              <filesets>
                <fileset>
                  <directory>${project.basedir}</directory>
                  <includes>
                    <include>LICENSE</include>
                  </includes>
                </fileset>
                <fileset>
                  <directory>${project.basedir}/licenses</directory>
                  <excludes>
                    <exclude>license-template.ftl</exclude>
                  </excludes>
                </fileset>
              </filesets>
            </configuration>
            <groupId>org.apache.maven.plugins</groupId>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>aggregate-add-third-party</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>aggregate-add-third-party</goal>
                </goals>
                <configuration>
                  <excludedGroups>au.csiro.pathling.*</excludedGroups>
                  <fileTemplate>${session.executionRootDirectory}/licenses/license-template.ftl</fileTemplate>
                  <includeTransitiveDependencies>false</includeTransitiveDependencies>
                  <licenseMerges>
                    <licenseMerge>Apache License, Version 2.0|Apache Software License 2.0|The Apache License, Version 2.0|The Apache Software License, Version 2.0|Apache 2.0 License|Apache License 2.0|Apache-2.0|Apache 2.0|Apache Software Licenses|Apache 2</licenseMerge>
                    <licenseMerge>BSD License|BSD New|The BSD License|New BSD License|BSD-3-Clause|The New BSD License</licenseMerge>
                    <licenseMerge>Eclipse Public License 1.0|Eclipse Public License - v 1.0</licenseMerge>
                    <licenseMerge>MIT License|The MIT License (MIT)|The MIT License|MIT|The JSON License</licenseMerge>
                  </licenseMerges>
                  <thirdPartyFilename>LICENSE</thirdPartyFilename>
                </configuration>
              </execution>
              <execution>
                <id>aggregate-download-licenses</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>aggregate-download-licenses</goal>
                </goals>
                <configuration>
                  <includeTransitiveDependencies>false</includeTransitiveDependencies>
                  <excludedGroups>^au\.csiro\.</excludedGroups>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <configuration>
                  <outputDirectory>${project.basedir}</outputDirectory>
                  <resources>
                    <resource>
                      <directory>target/generated-sources/license</directory>
                      <includes>
                        <include>LICENSE</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <id>copy-license</id>
                <phase>package</phase>
              </execution>
              <execution>
                <configuration>
                  <outputDirectory>${project.basedir}/licenses</outputDirectory>
                  <resources>
                    <resource>
                      <directory>target/generated-resources/licenses</directory>
                    </resource>
                  </resources>
                </configuration>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <id>copy-third-party-licenses</id>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>skipTests</id>
      <activation>
        <property>
          <name>skipTests</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>skipSurefireTests</id>
      <activation>
        <property>
          <name>skipSurefireTests</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
