<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2023 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>6.2.2</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.majorVersion>6</project.majorVersion>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <pathling.sparkVersion>3.3.2</pathling.sparkVersion>
    <pathling.scalaVersion>2.12</pathling.scalaVersion>
    <pathling.scalaFullVersion>2.12.17</pathling.scalaFullVersion>
    <pathling.deltaVersion>2.3.0</pathling.deltaVersion>
    <!-- Hadoop is currently pinned to 3.3.4 because of this vulnerability: CVE-2022-26612 -->
    <pathling.hadoopVersion>3.3.4</pathling.hadoopVersion>
    <pathling.hapiFhirVersion>6.6.1</pathling.hapiFhirVersion>
    <pathling.springBootVersion>2.7.13</pathling.springBootVersion>
    <pathling.springSecurityVersion>5.7.9</pathling.springSecurityVersion>
    <pathling.antlrVersion>4.9.3</pathling.antlrVersion>
    <pathling.dockerJavaVersion>3.2.13</pathling.dockerJavaVersion>
    <pathling.awsSdkVersion>1.12.449</pathling.awsSdkVersion>
    <!-- we do not use recent version 1.18.24 as it (wrongly) copies the JSR-380 NonNull 
         annotations from fields to getters resulting in duplicate constraint violations.
         This has been fixed in the main branch but not released yet -->
    <pathling.lombokVersion>1.18.26</pathling.lombokVersion>
    <pathling.guavaVersion>31.0.1-jre</pathling.guavaVersion>
    <pathling.infinispanVersion>14.0.8.Final</pathling.infinispanVersion>
    <pathling.jacksonVersion>2.13.4</pathling.jacksonVersion>
    <pathling.jerseyVersion>2.39.1</pathling.jerseyVersion>
    <pathling.slf4jVersion>1.7.36</pathling.slf4jVersion>
    <pathling.logbackVersion>1.2.11</pathling.logbackVersion>
    <pathling.surefireVersion>2.22.2</pathling.surefireVersion>
  </properties>

  <modules>
    <module>encoders</module>
    <module>library-api</module>
    <module>terminology</module>
    <module>fhirpath</module>
    <module>fhir-server</module>
    <module>lib/import</module>
    <module>lib/js</module>
    <module>lib/python</module>
    <module>site</module>
    <module>utilities</module>
  </modules>

  <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>fhir-server</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>fhir-server</artifactId>
        <version>${project.version}</version>
        <classifier>sources</classifier>
      </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>
        <classifier>all</classifier>
      </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>js</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>au.csiro.pathling</groupId>
        <artifactId>import</artifactId>
        <version>${project.version}</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-slf4j-impl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_${pathling.scalaVersion}</artifactId>
        <version>${pathling.sparkVersion}</version>
      </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>io.delta</groupId>
        <artifactId>delta-core_${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>2.13.0</version>
      </dependency>
      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${pathling.scalaFullVersion}</version>
      </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>

      <!-- Spring -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${pathling.springBootVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${pathling.springBootVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
        <version>${pathling.springBootVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <version>${pathling.springBootVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>${pathling.springBootVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-oauth2-resource-server</artifactId>
        <version>${pathling.springSecurityVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-oauth2-jose</artifactId>
        <version>${pathling.springSecurityVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <version>${pathling.springSecurityVersion}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>${pathling.springBootVersion}</version>
        <scope>test</scope>
      </dependency>

      <!-- ANTLR -->
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4</artifactId>
        <version>${pathling.antlrVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-runtime</artifactId>
        <version>${pathling.antlrVersion}</version>
      </dependency>

      <!-- AWS SDK -->
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bom</artifactId>
        <version>${pathling.awsSdkVersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bundle</artifactId>
        <version>${pathling.awsSdkVersion}</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>6.0.13.Final</version>
        <exclusions>
          <exclusion>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!-- Testing -->
      <dependency>
        <groupId>com.github.docker-java</groupId>
        <artifactId>docker-java</artifactId>
        <version>${pathling.dockerJavaVersion}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.github.docker-java</groupId>
        <artifactId>docker-java-transport-okhttp</artifactId>
        <version>${pathling.dockerJavaVersion}</version>
        <scope>test</scope>
      </dependency>
      <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.0</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.5</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>20230227</version>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.4</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.11.0</version>
      </dependency>
      <dependency>
        <groupId>jakarta.validation</groupId>
        <artifactId>jakarta.validation-api</artifactId>
        <version>2.0.2</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${pathling.guavaVersion}</version>
      </dependency>
      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
      </dependency>
      <dependency>
        <groupId>org.json4s</groupId>
        <artifactId>json4s-jackson_2.12</artifactId>
        <version>3.7.0-M11</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-2022-42889-->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.10.0</version>
      </dependency>

      <!-- CVE-2022-25857, CVE-2022-1471, CVE-2022-41854  -->
      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>1.33</version>
      </dependency>
      
      <!-- CVE-2022-37865 -->
      <dependency>
        <groupId>org.apache.ivy</groupId>
        <artifactId>ivy</artifactId>
        <version>2.5.1</version>
      </dependency>
      
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <version>4.9.10</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}/git.properties</generateGitPropertiesFilename>
        </configuration>
      </plugin>
      <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>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.0</version>
          <configuration>
            <source>11</source>
            <target>11</target>
            <compilerArgs>
              <arg>-Xlint:all</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <version>4.7.2</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>11</source>
            <target>11</target>
            <args>
              <arg>-feature</arg>
            </args>
            <scalaVersion>${pathling.scalaFullVersion}</scalaVersion>
          </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>
            <argLine>@{argLine} -Xmx4g -ea -Duser.timezone=UTC</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>
            <argLine>-Xmx4g -ea -Duser.timezone=UTC</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.1.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.8</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.2.1</version>
          <executions>
            <execution>
              <id>jar-no-fork</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.5.0</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>
            <includeDependencySources>true</includeDependencySources>
            <dependencySourceIncludes>
              <include>au.csiro.pathling:*</include>
            </dependencySourceIncludes>
            <dependencySourceExcludes>
              <exclude>au.csiro.pathling:encoders</exclude>
            </dependencySourceExcludes>
            <source>11</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>
            <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.0.1</version>
          <executions>
            <execution>
              <id>sign</id>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
        </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>true</autoReleaseAfterClose>
          </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.1</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.4.1</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.5.0</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.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.2.0</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>
      </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.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
          </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.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <configuration>
              <autoReleaseAfterClose>false</autoReleaseAfterClose>
            </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>
                </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>fhir-server/src/main/resources/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>

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

  <distributionManagement>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

</project>
