<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>uk.ac.warwick</groupId>
        <artifactId>warwick</artifactId>
        <version>6</version>
    </parent>

    <groupId>uk.ac.warwick.util</groupId>
    <artifactId>warwickutils-project</artifactId>
    <version>20260506</version>
    <packaging>pom</packaging>

    <name>Warwick Utils</name>
    <description>
        A set of Java utilities for use in other projects.
    </description>
    <url>http://www2.warwick.ac.uk/services/its/intranet/projects/webdev/admin/utils</url>

    <!-- I N C E P T I O N -->
    <inceptionYear>2006</inceptionYear>

    <properties>
        <maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>

        <org.springframework.version>5.2.20.RELEASE</org.springframework.version>
        <org.hibernate.version>5.4.24.Final</org.hibernate.version>
        <com.fasterxml.jackson.version>2.9.10</com.fasterxml.jackson.version>
        <com.fasterxml.jackson.databind.version>2.9.10.8</com.fasterxml.jackson.databind.version>
        <org.apache.jclouds.version>2.5.0</org.apache.jclouds.version>
        <twelvemonkeys.imageio.version>3.12.0</twelvemonkeys.imageio.version>
        <io.github.resilience4j.version>1.7.1</io.github.resilience4j.version>

        <project.root>${project.basedir}</project.root>
        <kotlin.version>1.9.24</kotlin.version>
    </properties>

    <!-- Need to add the local repository in order to get the parent pom -->
    <repositories>
        <repository>
            <id>nexus-public</id>
            <name>Internal Nexus Repository - Public</name>
            <url>https://mvn.elab.warwick.ac.uk/nexus/repository/public-anonymous</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <!-- ====================================================================== -->
    <!-- S C M -->
    <!-- ====================================================================== -->
    <scm>
        <developerConnection>scm:git:ssh://git@repo.elab.warwick.ac.uk/SHARED/warwick-utils.git</developerConnection>
        <url>https://repo.elab.warwick.ac.uk/projects/SHARED/repos/warwick-utils/browse</url>
    </scm>

    <!-- ====================================================================== -->
    <!-- I S S U E M A N A G E M E N T -->
    <!-- ====================================================================== -->
    <issueManagement>
        <system>jira</system>
        <url>https://bugs.elab.warwick.ac.uk/browse/UTL</url>
    </issueManagement>

    <!-- ====================================================================== -->
    <!-- C I M A N A G E M E N T -->
    <!-- ====================================================================== -->
    <ciManagement>
        <system>Bamboo</system>
        <url>http://build.elab.warwick.ac.uk/browse/UTILS</url>
    </ciManagement>

    <profiles>
        <profile>
            <id>deploy</id>
            <build>
                <defaultGoal>deploy</defaultGoal>
                <plugins>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.1.2</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <attach>false</attach>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>dist</id>
            <build>
                <defaultGoal>package</defaultGoal>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <outputDirectory>${project.root}/dist</outputDirectory>
                            <finalName>${project.artifactId}</finalName>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-clean-plugin</artifactId>
                        <version>2.3</version>
                        <executions>
                            <execution>
                                <id>auto-clean</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>clean</goal>
                                </goals>
                                <configuration>
                                    <excludeDefaultDirectories>true</excludeDefaultDirectories>
                                    <filesets>
                                        <fileset>
                                            <directory>${project.root}/dist</directory>
                                            <includes>
                                                <include>**/original-*.jar</include>
                                            </includes>
                                        </fileset>
                                    </filesets>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>jdk9plus</id>
            <activation>
                <jdk>[9,)</jdk>  <!-- activates for JDK 9 and above -->
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <!-- Allow cglib etc. to reflect anything -->
                            <argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <!-- ====================================================================== -->
    <!-- B U I L D -->
    <!-- ====================================================================== -->
    <build>
        <defaultGoal>install</defaultGoal>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                    <exclude>**/*.kt</exclude>
                </excludes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
            </testResource>
            <testResource>
                <directory>src/test/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                    <exclude>**/*.kt</exclude>
                </excludes>
            </testResource>
        </testResources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.2.2</version>
                    <configuration>
                        <forkCount>2C</forkCount>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <!-- Configure Kotlin plugin to compile both Kotlin and Java sources -->
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-maven-plugin</artifactId>
                <version>${kotlin.version}</version>
                <extensions>true</extensions>
                <executions>
                    <execution>
                        <id>compile</id>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <sourceDirs>
                                <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                                <sourceDir>${project.basedir}/src/main/java</sourceDir>
                            </sourceDirs>
                        </configuration>
                    </execution>
                    <execution>
                        <id>test-compile</id>
                        <goals>
                            <goal>test-compile</goal>
                        </goals>
                        <configuration>
                            <sourceDirs>
                                <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                                <sourceDir>${project.basedir}/src/test/java</sourceDir>
                            </sourceDirs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <!-- Reconfigure the default compiler to work nicely with the above -->
                <!-- doc: https://kotlinlang.org/docs/maven.html#compile-kotlin-and-java-sources -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <optimize>true</optimize>
                    <debug>true</debug>
                    <showDeprecation>true</showDeprecation>
                    <showWarnings>true</showWarnings>
                </configuration>
                <executions>
                    <!-- Replacing default-compile as it is treated specially by Maven -->
                    <execution>
                        <id>default-compile</id>
                        <phase>none</phase>
                    </execution>
                    <!-- Replacing default-testCompile as it is treated specially by Maven -->
                    <execution>
                        <id>default-testCompile</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>java-compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>java-test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>uk/ac/warwick/**</include>
                                <include>org/**</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <archive>
                        <manifest>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.openrewrite.maven</groupId>
                <artifactId>rewrite-maven-plugin</artifactId>
                <version>6.22.1</version>
                <dependencies>
                    <dependency>
                        <groupId>org.openrewrite.recipe</groupId>
                        <artifactId>rewrite-testing-frameworks</artifactId>
                        <version>3.21.2</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

    <!-- ====================================================================== -->
    <!-- D E P E N D E N C I E S -->
    <!-- ====================================================================== -->
    <dependencies>
        <!-- Kotlin standard library available to all modules so Kotlin code compiles and runs -->
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.26</version>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.14.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.14.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.jmock</groupId>
            <artifactId>jmock-junit4</artifactId>
            <version>2.12.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <version>2.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-library</artifactId>
            <version>2.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>jmock</groupId>
            <artifactId>jmock-cglib</artifactId>
            <version>1.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- bom imports -->
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-bom</artifactId>
                <version>1.11.677</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- project dependencies -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-ais</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-all</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-ant</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-cache</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-content</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-convert</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-csv</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-files</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-hibernate4</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-httpclient4</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-lookup</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-mail</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-mywarwick</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-password</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-queue</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-service</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-web</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-virusscan</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>warwickutils-core</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>test-resources</artifactId>
                <version>${project.version}</version>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-client</artifactId>
                <version>5.15.10</version>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-broker</artifactId>
                <version>5.15.10</version>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>1.10.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant-launcher</artifactId>
                <version>1.10.7</version>
            </dependency>

            <dependency>
                <groupId>com.yahoo.platform.yui</groupId>
                <artifactId>yuicompressor</artifactId>
                <version>2.4.8</version>
            </dependency>
            <dependency>
                <groupId>com.asual.lesscss</groupId>
                <artifactId>lesscss-engine</artifactId>
                <version>1.3.3</version>
            </dependency>
            <dependency>
                <groupId>org.mozilla</groupId>
                <artifactId>rhino</artifactId>
                <version>1.7.14</version>
            </dependency>
            <dependency>
                <groupId>net.sf.packtag</groupId>
                <artifactId>packtag</artifactId>
                <version>2.1</version>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-asm</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-instrument</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-instrument-tomcat</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jms</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-oxm</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>

            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${org.hibernate.version}</version>
            </dependency>

            <dependency>
                <groupId>org.jadira.usertype</groupId>
                <artifactId>usertype.core</artifactId>
                <version>7.0.0.CR1</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.h2database</groupId>
                        <artifactId>h2</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>uk.ac.warwick.sso</groupId>
                <artifactId>sso-client</artifactId>
                <version>2.97</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-codec</groupId>
                        <artifactId>commons-codec</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>uk.ac.warwick.util</groupId>
                        <artifactId>warwickutils-web</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.rometools</groupId>
                <artifactId>rome</artifactId>
                <version>1.17.0</version>
            </dependency>
            <dependency>
                <groupId>com.rometools</groupId>
                <artifactId>rome-modules</artifactId>
                <version>1.17.0</version>
            </dependency>

            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>24.1.1-jre</version>
            </dependency>

            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20231013</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.10</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>4.5.10</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.4.12</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore-nio</artifactId>
                <version>4.4.12</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpasyncclient</artifactId>
                <version>4.1.4</version>
            </dependency>

            <dependency>
                <groupId>org.apache.directory.studio</groupId>
                <artifactId>org.apache.commons.io</artifactId>
                <version>2.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.directory.studio</groupId>
                <artifactId>org.apache.commons.codec</artifactId>
                <version>1.8</version>
            </dependency>

            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>2.3.30</version>
            </dependency>

            <dependency>
                <groupId>com.sun.mail</groupId>
                <artifactId>javax.mail</artifactId>
                <version>1.6.2</version>
            </dependency>

            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>2.8.8</version>
            </dependency>

            <dependency>
                <groupId>net.spy</groupId>
                <artifactId>spymemcached</artifactId>
                <version>2.12.3</version>
            </dependency>

            <!-- The Amazon ElastiCache client is a fork of spymemcached with extra methods -->
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>elasticache-java-cluster-client</artifactId>
                <version>1.1.1</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${com.fasterxml.jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${com.fasterxml.jackson.databind.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${com.fasterxml.jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-jsr310</artifactId>
                <version>${com.fasterxml.jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-jaxb-annotations</artifactId>
                <version>${com.fasterxml.jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-joda</artifactId>
                <version>${com.fasterxml.jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-scala_2.13</artifactId>
                <version>${com.fasterxml.jackson.version}</version>
            </dependency>

            <dependency>
                <groupId>org.threeten</groupId>
                <artifactId>threeten-extra</artifactId>
                <version>1.5.0</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-text</artifactId>
                <version>1.8</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
                <version>2.7.0</version>
            </dependency>

            <dependency>
                <groupId>org.dom4j</groupId>
                <artifactId>dom4j</artifactId>
                <version>2.1.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>pull-parser</groupId>
                        <artifactId>pull-parser</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>jaxen</groupId>
                <artifactId>jaxen</artifactId>
                <version>1.2.0</version>
            </dependency>

            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>1.14.2</version>
            </dependency>

            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz-jobs</artifactId>
                <version>2.3.1</version>
            </dependency>

            <dependency>
                <groupId>javax.inject</groupId>
                <artifactId>javax.inject</artifactId>
                <version>1</version>
            </dependency>

            <dependency>
                <groupId>com.typesafe</groupId>
                <artifactId>config</artifactId>
                <version>1.3.4</version>
            </dependency>

            <dependency>
                <groupId>com.google.inject</groupId>
                <artifactId>guice</artifactId>
                <version>4.2.2</version>
            </dependency>

            <!-- Upgrade JClouds transitive dependencies -->
            <dependency>
                <groupId>com.google.inject.extensions</groupId>
                <artifactId>guice-assistedinject</artifactId>
                <version>4.2.2</version>
            </dependency>
            <dependency>
                <groupId>com.google.inject.extensions</groupId>
                <artifactId>guice-multibindings</artifactId>
                <version>4.2.2</version>
            </dependency>

            <dependency>
                <groupId>com.typesafe.play</groupId>
                <artifactId>play_2.13</artifactId>
                <version>2.7.3</version>
            </dependency>

            <!-- Upgrade Scala 2.13 version included by above to fix CVE-2022-36944 -->
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <version>2.13.10</version>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-reflect</artifactId>
                <version>2.13.10</version>
            </dependency>

            <!-- Explicitly include the version of akka in Play above, so we can get the right version of akka-testkit -->
            <dependency>
                <groupId>com.typesafe.akka</groupId>
                <artifactId>akka-testkit_2.13</artifactId>
                <version>2.5.23</version>
            </dependency>

            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
                <version>2.0.1.Final</version>
            </dependency>

            <dependency>
                <groupId>org.ccil.cowan.tagsoup</groupId>
                <artifactId>tagsoup</artifactId>
                <version>1.2.1</version>
            </dependency>
            <dependency>
                <groupId>uk.ac.warwick.tagsoup-html5</groupId>
                <artifactId>tagsoup-html5</artifactId>
                <version>20180410</version>
            </dependency>

            <dependency>
                <groupId>org.jruby</groupId>
                <artifactId>jruby-core</artifactId>
                <version>9.2.20.0</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-core</artifactId>
                <version>1.22</version>
            </dependency>

            <dependency>
                <groupId>net.logstash.logback</groupId>
                <artifactId>logstash-logback-encoder</artifactId>
                <version>5.3</version>
            </dependency>

            <dependency>
                <groupId>net.sourceforge.javacsv</groupId>
                <artifactId>javacsv</artifactId>
                <version>2.0</version>
            </dependency>

            <dependency>
                <groupId>org.apache.jclouds</groupId>
                <artifactId>jclouds-blobstore</artifactId>
                <version>${org.apache.jclouds.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jclouds.driver</groupId>
                <artifactId>jclouds-slf4j</artifactId>
                <version>${org.apache.jclouds.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jclouds.api</groupId>
                <artifactId>openstack-swift</artifactId>
                <version>${org.apache.jclouds.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jclouds.api</groupId>
                <artifactId>filesystem</artifactId>
                <version>${org.apache.jclouds.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jclouds.provider</groupId>
                <artifactId>azureblob</artifactId>
                <version>${org.apache.jclouds.version}</version>
            </dependency>

            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-storage-blob</artifactId>
                <version>12.16.0</version>
            </dependency>

            <!-- Patched version of JAI from our local repo. -->
            <dependency>
                <groupId>javax.media.jai</groupId>
                <artifactId>jai_core</artifactId>
                <version>1.1.3.patched</version>
            </dependency>
            <dependency>
                <groupId>javax.media.jai</groupId>
                <artifactId>jai_codec</artifactId>
                <version>1.1.3.patched</version>
            </dependency>
            <dependency>
                <groupId>javax.media.jai</groupId>
                <artifactId>mlibwrapper_jai</artifactId>
                <version>1.1.3.patched</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-imaging</artifactId>
                <version>1.0-alpha1</version>
            </dependency>

            <dependency>
                <groupId>com.twelvemonkeys.imageio</groupId>
                <artifactId>imageio-jpeg</artifactId>
                <version>${twelvemonkeys.imageio.version}</version>
            </dependency>

            <dependency>
                <groupId>com.twelvemonkeys.imageio</groupId>
                <artifactId>imageio-webp</artifactId>
                <version>${twelvemonkeys.imageio.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-validator</groupId>
                <artifactId>commons-validator</artifactId>
                <version>1.6</version>
            </dependency>

            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>1.9.4</version>
            </dependency>

            <dependency>
                <groupId>dnsjava</groupId>
                <artifactId>dnsjava</artifactId>
                <version>2.1.9</version>
            </dependency>

            <!-- Test dependencies -->
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.6</version>
            </dependency>

            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>1.10.19</version>
            </dependency>

            <dependency>
                <groupId>jetty</groupId>
                <artifactId>jetty</artifactId>
                <version>5.1.10</version>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>1.7.26</version>
            </dependency>

            <dependency>
                <groupId>com.thimbleware.jmemcached</groupId>
                <artifactId>jmemcached-core</artifactId>
                <version>1.0.0</version>
            </dependency>

            <!-- SBTWO-10722 Dependency to read and write WebP images -->
            <dependency>
                <groupId>com.github.nintha</groupId>
                <artifactId>webp-imageio-core</artifactId>
                <version>0.1.3</version>
            </dependency>

            <!--
                SBTWO-10722 Dependency to extract metadata from WebP images because currently
                Apache Commons Imaging library does not support WebP format and WebP metadata extraction
                Link: https://commons.apache.org/proper/commons-imaging/formatsupport.html
            -->
            <dependency>
                <groupId>com.drewnoakes</groupId>
                <artifactId>metadata-extractor</artifactId>
                <version>2.18.0</version>
            </dependency>

            <dependency>
                <groupId>io.github.resilience4j</groupId>
                <artifactId>resilience4j-circuitbreaker</artifactId>
                <version>${io.github.resilience4j.version}</version>
            </dependency>

            <dependency>
                <groupId>io.github.resilience4j</groupId>
                <artifactId>resilience4j-retry</artifactId>
                <version>${io.github.resilience4j.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <modules>
        <module>modules/warwickutils-all</module>

        <module>modules/warwickutils-ant</module>
        <module>modules/warwickutils-cache</module>
        <module>modules/warwickutils-content</module>
        <module>modules/warwickutils-convert</module>
        <module>modules/warwickutils-core</module>
        <module>modules/warwickutils-csv</module>
        <module>modules/warwickutils-files</module>
        <module>modules/warwickutils-hibernate4</module>
        <module>modules/warwickutils-httpclient4</module>
        <module>modules/warwickutils-lookup</module>
        <module>modules/warwickutils-mail</module>
        <module>modules/warwickutils-mywarwick</module>
        <module>modules/warwickutils-password</module>
        <module>modules/warwickutils-queue</module>
        <module>modules/warwickutils-service</module>
        <module>modules/warwickutils-web</module>
        <module>modules/warwickutils-virusscan</module>
        <module>modules/warwickutils-ais</module>

        <module>modules/warwickutils-test</module>
        <module>modules/test-resources</module>
    </modules>
</project>
