<?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>com.atlassian.platform.dependencies</groupId>
        <artifactId>platform-deps</artifactId>
        <version>7.0.14</version>
    </parent>

    <groupId>com.atlassian.bitbucket.server</groupId>
    <artifactId>bitbucket-parent</artifactId>
    <version>9.0.0</version>
    <packaging>pom</packaging>

    <name>Bitbucket Server - Parent</name>
    <organization>
        <name>Atlassian</name>
        <url>https://www.atlassian.com</url>
    </organization>

    <scm>
        <connection>scm:git:ssh://git@stash.dev.internal.atlassian.com:7999/STASH/stash.git</connection>
        <developerConnection>scm:git:ssh://git@stash.dev.internal.atlassian.com:7999/STASH/stash.git</developerConnection>
        <url>scm:git:http://stash.dev.internal.atlassian.com/git/STASH/stash.git</url>
        <tag>bitbucket-parent-9.0.0</tag>
    </scm>
    <!-- Temporary override of the maven repo that we publish artifacts to. Once the platform poms have switched to
     using maven-closedsource-private, we can remove this -->
    <distributionManagement>
        <repository>
            <id>maven-atlassian-com</id>
            <name>Atlassian Closed Source Private Repository</name>
            <url>https://packages.atlassian.com/maven-closedsource-private</url>
        </repository>
        <snapshotRepository>
            <id>maven-atlassian-com</id>
            <name>Atlassian Closed Source Private Snapshot Repository</name>
            <url>https://packages.atlassian.com/maven-closedsource-private-snapshot</url>
        </snapshotRepository>
    </distributionManagement>

    <properties>
        <jdkLevel>17</jdkLevel>

        <artifactory.target.repo>maven-closedsource-private-local</artifactory.target.repo>

        <skip.unit.tests>false</skip.unit.tests>
        <skipTests>${skip.unit.tests}</skipTests>
        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss,SSSZ</maven.build.timestamp.format>

        <source.encoding>UTF-8</source.encoding>
        <tomcat.containerId>tomcat9x</tomcat.containerId>
        <project.build.sourceEncoding>${source.encoding}</project.build.sourceEncoding>
        <project.reporting.outputEncoding>${source.encoding}</project.reporting.outputEncoding>
        <maven.findbugs.plugin.version>3.0.5</maven.findbugs.plugin.version>
        <maven.javadoc.plugin.version>3.0.1</maven.javadoc.plugin.version>
        <maven.pmd.plugin.version>3.10.0</maven.pmd.plugin.version>
        <findbugs.annotations.version>3.0.0</findbugs.annotations.version>

        <!-- Defines whether the UI tests should pop up Firefox (true = hide Firefox) -->
        <xvfb.enable>true</xvfb.enable>
        <!-- defines which browser func test bucket to run. Should only be used in CI:
             a func test will be run if testClass.name().hashcode() % buckets == bucket
             otherwise tests are run as normal - same port, same home etc -->
        <stash.test.func.buckets>1</stash.test.func.buckets>
        <stash.test.func.bucket>0</stash.test.func.bucket>

        <stash.startup.timeout>300000</stash.startup.timeout>

        <!-- Default to running integration tests. Any of the following may be used to skip integration tests:
             * -DskipIntegrationTests=true
             * -DskipITs=true
             * -PskipIntegrationTests

             Note: skipTests only controls skipping _unit tests_. Passing -DskipTests=true will _not_ skip integration
             tests in AMPS/Failsafe. -->
        <skipIntegrationTests>false</skipIntegrationTests>
        <skipITs>${skipIntegrationTests}</skipITs>

        <clover.report.path>${project.basedir}/etc/clover/clover-report.xml</clover.report.path>
        <findbugs.excludefilterfile.path>etc/findbugs/findbugs-excludes.xml</findbugs.excludefilterfile.path>
        <findbugs.includefilterfile.path>etc/findbugs/findbugs-includes.xml</findbugs.includefilterfile.path>
        <findbugs.only.analyze>com.atlassian.stash.-,com.atlassian.bitbucket.-</findbugs.only.analyze>

        <!-- Defines common Surefire arguments. commonArgLine is intended to be reusable. argLine is replaceable. For
             nested modules which need additional Surefire configuration, they can override the argLine property, and
             use the commonArgLine property to retain the initial configuration.-->
        <surefire.commonArgLine>-Dfile.encoding=UTF-8 -Djava.awt.headless=true</surefire.commonArgLine>
        <surefire.argLine>${surefire.commonArgLine}</surefire.argLine>

        <!-- skips the generation of the bundled-plugins zip -->
        <skip.plugins.bundled.zip>false</skip.plugins.bundled.zip>

        <!-- skips the generation of the plugins' REST and javadoc documentation
             Since the move to Swagger this is not needed any more and should always be false. Enablding it
             prevents a building docs on Java 13+ -->
        <skip.plugins.rest.docs>true</skip.plugins.rest.docs>

        <!-- if true, skip running NPM install during webapp build (intended to be overridden via the command line) -->
        <skipNpmInstall>false</skipNpmInstall>

        <!-- if true, skip checking if platform.dependencies.version matches project.parent.version -->
        <skipBasePomValidation>false</skipBasePomValidation>

        <!-- Atlassian Platform - when updating, the parent pom version must be kept in sync -->
        <platform.dependencies.version>7.0.14</platform.dependencies.version>

        <!-- Atlassian Platform version overrides -->
        <!-- Even when it matches platform, we override aui.version to force/remind us to keep -->
        <!-- the version that NPM is using in-sync: npm install @atlassian/aui@<newversion>    -->
        <aui.version>9.11.4</aui.version>
        <!-- 5.0.4 contains test fixes that we need for plugin compat -->
        <atlassian-authentication.version>5.0.4</atlassian-authentication.version>

        <!-- This is jquery from atlassian-plugins-jquery not npm.
            We still consume jquery from npm for tests.
            We need to use the equivalent patched version for the version consumed from npm.
            e.g. npm version = 3.6.0, atlassian-plugins-jquery version = 3.6.0.4 -->
        <jquery.version>3.6.0.4</jquery.version>

        <!-- Atlassian module versions -->

        <atl.aui.pageobjects.version>1.0.0</atl.aui.pageobjects.version>
        <!-- The version of the bundled Bitbucket Cloud Migration Assistant (BCMA) plugin needs to be a version of the
             plugin that is also released on marketplace. Other "final" release versions are development versions only
             and should not be bundled. -->
        <atl.bcma.version>1.3.138</atl.bcma.version>
        <atl.dev.status.api.version>2.6.0</atl.dev.status.api.version>
        <atl.functest.version>3.0.0</atl.functest.version>
        <atl.fusion.schema.version>3.0.1</atl.fusion.schema.version>
        <atl.hazelcast.extras.version>5.0.0</atl.hazelcast.extras.version>
        <atl.hibernate.extras.version>7.0.2</atl.hibernate.extras.version>
        <atl.mesh.libversion>3.0.0</atl.mesh.libversion>
        <atl.keystore.version>1.9</atl.keystore.version>
        <atl.selenium.version>3.3.5</atl.selenium.version>
        <atl.stash.remote.event>2.0.0</atl.stash.remote.event>
        <atl.visual.comparison.version>${atl.selenium.version}</atl.visual.comparison.version>
        <atl.uri.version>2.0</atl.uri.version>
        <atl.utl.contentcache.version>4.4.1</atl.utl.contentcache.version>
        <atl.utl.process.version>1.8.3</atl.utl.process.version>
        <acr.version>3.0.0</acr.version>
        <aks.version>5.0.1</aks.version>
        <serialblocklist.version>2.0.2</serialblocklist.version>
        <java11-objectfilter.version>1.0.1</java11-objectfilter.version>
        <atlassian-business-insights.version>3.0.4</atlassian-business-insights.version>
        <atlassian.qunit.version>2.0.1</atlassian.qunit.version>
        <aws.java.sdk.core.version>1.12.641</aws.java.sdk.core.version>
        <jira.integration.version>10.0.1</jira.integration.version>
        <pact.version>3.5.24</pact.version>
        <!-- Please check <platform.ctk.test.exclude> section in func-test/pom.xml for changes required (if any), whenever this version is changed -->
        <platform.ctk.version>5.0.5@platform_5.0.19-a424e67</platform.ctk.version>
        <!-- STP has been replaced with ATST, however the exported STP SPI has been kept for compatibility. It can be
             removed in Bitbucket Server 6.0. See BSERVDEV-15875 -->
        <stp.version>3.10.7</stp.version>
        <atst.version>2.2.0</atst.version>
        <!-- libraries need to have a .libversion suffix -->
        <amps.libversion>8.16.2</amps.libversion>
        <aspectj.libversion>1.9.22.1</aspectj.libversion>
        <clover.libversion>4.5.2</clover.libversion>
        <commonmark.libversion>0.15.2</commonmark.libversion>
        <commons.beanutils.libversion>1.9.4</commons.beanutils.libversion>
        <!-- BBSDEV-30493 removed in platform. -->
        <commons-lang.version>2.6</commons-lang.version>
        <commons.validator.libversion>1.4.1</commons.validator.libversion>
        <com.h3xstream.findsecbugs.libversion>1.4.4</com.h3xstream.findsecbugs.libversion>
        <dark.features.plugin.version>2.0.0</dark.features.plugin.version>
        <!-- The embedded-elasticsearch-plugin versions 7+ run OpenSearch instead of Elasticsearch. Renaming the
             artifact is difficult to do because it is harcoded in AMPS. -->
        <embedded.elasticsearch.plugin.version>8.0.2</embedded.elasticsearch.plugin.version>
        <google.guice.libversion>5.1.0</google.guice.libversion>
        <grpc.libversion>1.59.1</grpc.libversion>
        <hamcrest.libversion>2.2</hamcrest.libversion>
        <hamcrest.date.version>2.0.5</hamcrest.date.version>
        <!-- Note: Additional manual testing (such as testing split brain recovery and testing node discovery in AWS
             and Azure) is generally required when upgrading Hazelcast. Upgrade with caution -->
        <hazelcast.libversion>5.2.5</hazelcast.libversion>
        <hazelcast-hibernate5.libversion>5.0.0</hazelcast-hibernate5.libversion>
        <hazelcast-wm.libversion>4.0</hazelcast-wm.libversion>
        <hibernate.libversion>5.6.15.Final</hibernate.libversion>
        <!-- HikariCP 5+ requires Java 11 minimum, so we cannot upgrade to it until we no longer support Java 8 -->
        <hikaricp.libversion>4.0.3</hikaricp.libversion>
        <!-- Upgrading to a newer version needs the i4j runtime artifact to be uploaded to maven.atlassian.com
        Follow https://hello.atlassian.net/wiki/spaces/BSERV/pages/647635952/HOWTO+-+Update+Install4J+Version for instructions-->
        <install4j.version>9.0.7-atlassian-hosted</install4j.version>
        <jaxrs.libversion>1.1.1</jaxrs.libversion>
        <jakarta-xml-ws.version>2.3.3</jakarta-xml-ws.version>
        <jjwt.libversion>0.11.2</jjwt.libversion>
        <joda-time.version>2.12.7</joda-time.version>
        <jsonassert.libversion>1.4.0</jsonassert.libversion>
        <junit.libversion>4.13.2</junit.libversion>
        <liquibase.version>4.16.1</liquibase.version>
        <liquibase-slf4j.libversion>4.1.0</liquibase-slf4j.libversion>
        <testcontainers.version>1.19.8</testcontainers.version>
        <!-- Upgrading logback to a new minor version may require a new version of logstash-logback-encoder -->
        <logback.libversion>1.5.6</logback.libversion>
        <!-- Upgrading logstash-logback-encoder to a new minor version may require a new/different version of logback -->
        <logstash-logback.libversion>7.3</logstash-logback.libversion>
        <mockito.libversion>4.8.0</mockito.libversion>
        <!-- When upgrading Netty, check its tcnative.version and update that here as well. Failure to do so
             can result in runtime errors and other issues when using SSL with gRPC. -->
        <netty.libversion>4.1.109.Final</netty.libversion>
        <netty.tcnative.libversion>2.0.65.Final</netty.tcnative.libversion>
        <org.snakeyaml.version>2.0</org.snakeyaml.version>
        <owasp-java-html-sanitizer.libversion>20220608.1</owasp-java-html-sanitizer.libversion>
        <!-- Protobuf versions in Mesh and Bitbucket must be kept in sync, update Mesh first, make a new release and then bump protobuf together with the Mesh version bump -->
        <protobuf.libversion>3.23.4</protobuf.libversion>
        <!-- TODO: remove bitbucket-logback-logging-system (added in BBSDEV-30327) when upgrading to Spring Boot 3 -->
        <spring.boot.libversion>2.7.18</spring.boot.libversion>
        <supercsv.libversion>2.4.0</supercsv.libversion>
        <atlassian.secrets.version>3.2.5</atlassian.secrets.version>
        <truezip.libversion>7.7.10</truezip.libversion>
        <tomcat.libversion>9.0.90</tomcat.libversion>
        <wiremock.libversion>2.35.2</wiremock.libversion>
        <webdriver.browser>firefox</webdriver.browser>
        <webdriver.browser.headless>false</webdriver.browser.headless>

        <!-- If you change these selenium browser properties, you should also change
             Globals.SELENIUM_DOCKER_IMAGE in the bamboo specs -->
        <webdriver.docker.browser>firefox</webdriver.docker.browser>
        <webdriver.docker.image.version>3.141.59-20210929</webdriver.docker.image.version>
        <webdriver.docker.image>selenium/standalone-${webdriver.docker.browser}:${webdriver.docker.image.version}</webdriver.docker.image>
        <webdriver.docker.debug.image>selenium/standalone-${webdriver.docker.browser}-debug:${webdriver.docker.image.version}</webdriver.docker.debug.image>

        <!-- xml-api version 2.0 and 2.0.2 are actually older than 1.4.01 - don't upgrade to them -->
        <xmlapis.libversion>1.4.01</xmlapis.libversion>

        <!-- Version of the bundled ZDU (Zero-downtime upgrade, aka rolling upgrades) plugin -->
        <zdu.plugin.version>3.0.1</zdu.plugin.version>

        <!-- The versions of translation bundles -->
        <bitbucket.translations.de_DE>9.0.0.rc7-202407170044</bitbucket.translations.de_DE>
        <bitbucket.translations.fr_FR>9.0.0.rc7-202407170044</bitbucket.translations.fr_FR>
        <bitbucket.translations.ja_JP>9.0.0.rc7-202407170044</bitbucket.translations.ja_JP>

        <!-- Used by api-compat to compare API changes -->
        <api.compatibility.check.version>9.0.0-eap06</api.compatibility.check.version>

        <!-- Typesafe Config version required by SOKE to work in Cthulhu harness -->
        <typesafe-config.libversion>1.2.1</typesafe-config.libversion>

        <!-- Plugin framework -->
        <servicemix.aopalliance.libversion>1.0_6</servicemix.aopalliance.libversion>
        <servicemix.velocity.libversion>1.7_6</servicemix.velocity.libversion>

        <!-- Package versions for BNDLib hints -->
        <spring.osgi.import.version>[5.0,6.0)</spring.osgi.import.version>
        <servlet-api.osgi.import.version>[2.5,5.0)</servlet-api.osgi.import.version>

        <!-- frontend build version -->
        <fe.plugin.version>1.15.0</fe.plugin.version>
        <!-- Do not prefix with 'v', update .nvmrc if you change this
             To update, first change the values here, then run 'etc/misc/deploy-new-node-npm.sh' without arguments
             to publish new versions to packages.atlassian.com -->
        <fe.node.version>20.10.0</fe.node.version>
        <fe.node.atlassian.hosted.version>${fe.node.version}-atlassian-hosted</fe.node.atlassian.hosted.version>
        <fe.npm.version>10.2.3</fe.npm.version>
        <fe.npm.atlassian.hosted.version>${fe.npm.version}-atlassian-hosted</fe.npm.atlassian.hosted.version>
        <fe.node.installdir>.node</fe.node.installdir>
        <minify.plugin.version>1.3.0</minify.plugin.version>
        <!-- Don't update existing lock file when we are only installing project dependencies -->
        <fe.npm.install.cmd>install --prefer-offline --no-audit --no-save</fe.npm.install.cmd>

        <!-- Search plugin dependencies -->
        <antlr4.version>4.6</antlr4.version>
        <!-- The atlassian-elasticsearch-client supports both Elasticsearch and OpenSearch from version 6+. Renaming the
             artifact is difficult because there are multiple consumers, and if Elasticsearch and OpenSearch ever
             diverge enough it's likely an atlassian-opensearch-client fork will need to be created anyway. -->
        <atlassian-elasticsearch-client.version>8.0.4</atlassian-elasticsearch-client.version>
        <re2j.version>1.6</re2j.version>
        <rxjava.version>1.3.8</rxjava.version>
        <metrics-spring.version>3.1.2</metrics-spring.version>
        <pholser.version>0.7</pholser.version>
        <apache-log4j.version>2.20.0</apache-log4j.version>
        <sshd.version>2.12.1</sshd.version>
        <opensearch.version>2.14.0</opensearch.version>
        <opensearch.atlassian.hosted.version>${opensearch.version}-atlassian-hosted</opensearch.atlassian.hosted.version>
        <swagger-version>2.2.22</swagger-version>
        <bitbucket-swagger-version>1.4.14</bitbucket-swagger-version>
        <bitbucket-swagger-processor-version>1.0.1</bitbucket-swagger-processor-version>
        <dc-swagger-version>2.0.0</dc-swagger-version>

        <atlassian.theme.version>1.1.2</atlassian.theme.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- List Bitbucket modules first. These entries will be used for intermodule dependencies -->
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-access-tokens</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-analytics-whitelist</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-ao-common</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-audit</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-branch-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-branch</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-build</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-build-bamboo</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-build-jenkins</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-build-feature</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-bundled-hooks</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-bundled-plugins</artifactId>
                <version>9.0.0</version>
                <type>txt</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-chaperone</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-cluster-info</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-code-insights-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-code-insights-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-code-insights</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-code-owners</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-comment-likes-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-comment-likes</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-contributing-guidelines</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-crowd-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-crowd-sso</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-dao-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-dao-impl</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-default-reviewers</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-deployments</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-secret-scanning</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-default-tasks</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-distribution</artifactId>
                <version>9.0.0</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-distribution-launcher</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-distribution-licenses</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-distribution-search-config</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-dmz-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-dmz-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-emoticons-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-emoticons-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-emoticons</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-frontend</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-frontend-support</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-git</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-git-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-git-binary</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-git-common</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-git-lfs</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-git-rest</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-git-mesh</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-gpg</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-gpg-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-http-client</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-importer</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-ipd</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-common</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-dcm-test-plugin</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-dcm-test-util</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-hosting</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-hosting-util</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-javascript</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-licensed-plugin</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-mirror-util</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-test-external-plugin</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-test-support-plugin</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-resources</artifactId>
                <version>9.0.0</version>
            </dependency>
            <!-- Zip containing an uninitiated Bitbucket home set up to enter mirror mode. -->
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-it-resources</artifactId>
                <version>9.0.0</version>
                <type>zip</type>
                <classifier>mirror</classifier>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-jira-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-jira-commit-checker</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-jira-development-integration</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-jira</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-labels</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-mesh-callback</artifactId>
                <version>0.9.3</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-mesh-rpc-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-mesh-support</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-model</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-mirroring-common</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-mirroring-mirror</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-mirroring-upstream</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-nav-links</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-notification</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-page-objects</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-platform</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-plugin-extender</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-plugin-information-provider</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-policies</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-process-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-process</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-pull-request-cleanup</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-rate-limit</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-ref-restriction-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-ref-restriction-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-ref-restriction</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-repository-management</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-repository-ref-sync-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-repository-ref-sync</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-repository-shortcuts</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-rest</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-rest-ui</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-rest-v2</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-rest-v2-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-rest-v2-model</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-rest-v2-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-sal</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-scm-cache</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-scm-common</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-scm-test-util</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-search</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-search-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-service-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-service-impl</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-sourcetree</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-ssh-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-ssh</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-suggest-reviewers</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-suggest-reviewers-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-suggest-reviewers-spi</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-suggestions</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-tag</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-test-util</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-upm-accessor</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-util</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-velocity-helper</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-web-common</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-webapp</artifactId>
                <version>9.0.0</version>
                <type>war</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-webhooks</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-webhooks-api</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-x509</artifactId>
                <version>9.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-xcode</artifactId>
                <version>9.0.0</version>
            </dependency>

            <!-- Required for dealing with the incompatibility between SLF4J 2.x and Spring Boot 2.x-->
            <!-- To be removed when upgrading to Spring Boot 3.x-->
            <dependency>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-logback-logging-system</artifactId>
                <version>1.0.0</version>
            </dependency>

            <!-- BBSDEV-30494 - We want to remove this in favour of java.time -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${joda-time.version}</version>
            </dependency>

            <!-- Bitbucket Mesh -->
            <dependency>
                <groupId>com.atlassian.bitbucket.mesh</groupId>
                <artifactId>mesh-app</artifactId>
                <version>${atl.mesh.libversion}</version>
                <!-- BBSDEV-30726: Update Mesh dependencies to the jakarta GAVs -->
                <exclusions>
                    <!-- Old jakarta.validation-api GAV -->
                    <exclusion>
                        <groupId>javax.validation</groupId>
                        <artifactId>validation-api</artifactId>
                    </exclusion>
                    <!-- Force our version of netty - not the one in Mesh's dependencies -->
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-transport-native-epoll</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.mesh</groupId>
                <artifactId>mesh-rpc</artifactId>
                <version>${atl.mesh.libversion}</version>
                <!-- BBSDEV-30726: Update Mesh dependencies to the jakarta GAVs -->
                <exclusions>
                    <!-- Old jakarta.annotation-api GAV -->
                    <exclusion>
                        <groupId>javax.annotation</groupId>
                        <artifactId>javax.annotation-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.mesh</groupId>
                <artifactId>mesh-rpc-fast</artifactId>
                <version>${atl.mesh.libversion}</version>
                <!-- BBSDEV-30726: Update Mesh dependencies to the jakarta GAVs -->
                <exclusions>
                    <!-- Old jakarta.annotation-api GAV -->
                    <exclusion>
                        <groupId>javax.annotation</groupId>
                        <artifactId>javax.annotation-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.mesh</groupId>
                <artifactId>mesh-shared-common</artifactId>
                <version>${atl.mesh.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.mesh</groupId>
                <artifactId>mesh-shared-core</artifactId>
                <version>${atl.mesh.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.mesh</groupId>
                <artifactId>mesh-test-cluster</artifactId>
                <version>${atl.mesh.libversion}</version>
            </dependency>

            <!-- Zipped git repositories used for testing -->
            <dependency>
                <groupId>com.atlassian.bitbucket.server.git</groupId>
                <artifactId>gpg-hosting</artifactId>
                <version>1.2</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server.git</groupId>
                <artifactId>gpg-sanity</artifactId>
                <version>1.0</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.server.git</groupId>
                <artifactId>ref-sanity</artifactId>
                <version>1.6</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>48k-branches</artifactId>
                <version>1.0</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>binary-files-repository</artifactId>
                <version>1.0</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>codeowners</artifactId>
                <version>2.6</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>comment-drift</artifactId>
                <version>0.8</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>default-repository</artifactId>
                <version>1.1</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>diff-tree</artifactId>
                <version>1.1</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>garbage</artifactId>
                <version>1.1</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>jira-integration</artifactId>
                <version>1.1</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>mailmap</artifactId>
                <version>1.0</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>merge</artifactId>
                <version>2.12</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>merge-commits</artifactId>
                <version>1.0</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>pull-requests</artifactId>
                <version>1.7</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>qa-resources</artifactId>
                <version>1.10.1</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>secrets</artifactId>
                <version>2.1</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>ssh-hosting</artifactId>
                <version>1.2</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>subrepositories</artifactId>
                <version>1.0</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>com.atlassian.stash.git</groupId>
                <artifactId>suggestion-drift</artifactId>
                <version>1.2</version>
                <type>zip</type>
            </dependency>

            <!-- Atlassian Platform Dependencies -->
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-public-api</artifactId>
                <version>${platform.dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-deprecated-public-api</artifactId>
                <version>${platform.dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-internal-api</artifactId>
                <version>${platform.dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-test-resources</artifactId>
                <version>${platform.dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-system-classpath</artifactId>
                <version>${platform.dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-framework-bundles</artifactId>
                <version>${platform.dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-bundled-plugins</artifactId>
                <version>${platform.dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- BBSDEV-31002 Platform override. Remove when updating to platform 7.0.10+ -->
            <dependency>
                <groupId>com.atlassian.plugins.authentication</groupId>
                <artifactId>atlassian-authentication-plugin</artifactId>
                <version>${atlassian-authentication.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins.authentication</groupId>
                <artifactId>atlassian-authentication-plugin-api</artifactId>
                <version>${atlassian-authentication.version}</version>
            </dependency>

            <!-- Embedded OpenSearch version -->
            <!-- The embedded-elasticsearch-plugin versions 7+ run OpenSearch instead of Elasticsearch. Renaming -->
            <!-- the artifact is difficult to do because it is hardcoded in AMPS, as AMPS needs this so it can -->
            <!-- discover which version of the plugin to run with a given version of Bitbucket. -->
            <!-- See https://bitbucket.org/atlassian/amps/src/8.0-stable/amps-maven-plugin/src/main/java/com/atlassian/maven/plugins/amps/product/BitbucketProductHandler.java -->
            <dependency>
                <groupId>com.atlassian.bitbucket.search</groupId>
                <artifactId>embedded-elasticsearch-plugin</artifactId>
                <version>${embedded.elasticsearch.plugin.version}</version>
            </dependency>

            <!-- This dependency is not provided by the platform -->
            <dependency>
                <groupId>com.atlassian.diagnostics</groupId>
                <artifactId>atlassian-diagnostics-core-test</artifactId>
                <version>${atlassian-diagnostics.version}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.jwt</groupId>
                <artifactId>jwt-core</artifactId>
                <version>${atlassian-jwt.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk18on</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcpkix-jdk18on</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Business Insights -->
            <dependency>
                <groupId>com.atlassian.business.insights</groupId>
                <artifactId>api</artifactId>
                <version>${atlassian-business-insights.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.business.insights</groupId>
                <artifactId>bitbucket-plugin</artifactId>
                <version>${atlassian-business-insights.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.business.insights</groupId>
                <artifactId>core-plugin</artifactId>
                <version>${atlassian-business-insights.version}</version>
            </dependency>

            <!-- Users/Permissions CSV Export -->
            <dependency>
                <groupId>net.sf.supercsv</groupId>
                <artifactId>super-csv</artifactId>
                <version>${supercsv.libversion}</version>
            </dependency>

            <!-- Database Credentials Encryption -->
            <dependency>
                <groupId>com.atlassian.secrets</groupId>
                <artifactId>atlassian-secrets-api</artifactId>
                <version>${atlassian.secrets.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.secrets</groupId>
                <artifactId>atlassian-secrets-store</artifactId>
                <version>${atlassian.secrets.version}</version>
                <exclusions>
                    <exclusion><!-- Force our version of netty - not the one in the Amazon libraries that secrets uses -->
                        <groupId>io.netty</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.secrets</groupId>
                <artifactId>atlassian-secrets-cli</artifactId>
                <version>${atlassian.secrets.version}</version>
            </dependency>

            <!-- SSH -->
            <!-- When upgrading make sure logging is kept the same, see STASHDEV-8528. -->
            <dependency>
                <groupId>org.apache.sshd</groupId>
                <artifactId>sshd-core</artifactId>
                <version>${sshd.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.sshd</groupId>
                <artifactId>sshd-common</artifactId>
                <version>${sshd.version}</version>
            </dependency>
            <!-- For ed25519 support -->
            <dependency>
                <groupId>net.i2p.crypto</groupId>
                <artifactId>eddsa</artifactId>
                <version>0.2.0</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.security.auth.trustedapps</groupId>
                <artifactId>atlassian-trusted-apps-core</artifactId>
                <version>${atlassian-trusted-apps.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk15on</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.atlassian.httpclient</groupId>
                <artifactId>atlassian-httpclient-library</artifactId>
                <version>${atlassian-httpclient.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.atlassian.activeobjects</groupId>
                <artifactId>activeobjects-plugin</artifactId>
                <version>${activeobjects.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.aui</groupId>
                <artifactId>auiplugin</artifactId>
                <version>${aui.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.beehive</groupId>
                <artifactId>beehive-hazelcast5</artifactId>
                <version>${beehive.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.bitbucket.plugin.bcma</groupId>
                <artifactId>bitbucket-migration-plugin</artifactId>
                <version>${atl.bcma.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.fusion</groupId>
                <artifactId>fusion-schema</artifactId>
                <version>${atl.fusion.schema.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.hazelcast</groupId>
                <artifactId>atlassian-hazelcast-extras-osgi</artifactId>
                <version>${atl.hazelcast.extras.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.hazelcast</groupId>
                <artifactId>hazelcast-spring-test-util</artifactId>
                <version>${atl.hazelcast.extras.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins</groupId>
                <artifactId>atlassian-client-resource</artifactId>
                <version>${acr.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins</groupId>
                <artifactId>atlassian-dev-status-api</artifactId>
                <version>${atl.dev.status.api.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins</groupId>
                <artifactId>jquery</artifactId>
                <version>${jquery.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins.shortcuts</groupId>
                <artifactId>atlassian-shortcuts-plugin</artifactId>
                <version>${aks.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins.shortcuts</groupId>
                <artifactId>atlassian-shortcuts-module-api</artifactId>
                <version>${aks.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.config</groupId>
                <artifactId>atlassian-config</artifactId>
                <version>${atlassian-config.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.atlassian.spring</groupId>
                        <artifactId>atlassian-spring</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>dom4j</groupId>
                        <artifactId>dom4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.jcip</groupId>
                        <artifactId>jcip-annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.config</groupId>
                <artifactId>atlassian-config-internal</artifactId>
                <version>${atlassian-config.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.atlassian.spring</groupId>
                        <artifactId>atlassian-spring</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>dom4j</groupId>
                        <artifactId>dom4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.jcip</groupId>
                        <artifactId>jcip-annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- The embedded crowd admin plugin is versioned independently of Crowd -->
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>embedded-crowd-admin-plugin</artifactId>
                <version>${crowd-admin-plugin.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-collections</groupId>
                        <artifactId>commons-collections</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Crowd dependencies (used by stash) -->
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>crowd-persistence-hibernate5</artifactId>
                <version>${crowd.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.sf.ehcache</groupId>
                        <artifactId>ehcache</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.sf.ehcache.internal</groupId>
                        <artifactId>ehcache</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-c3p0</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk15on</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- Crowd dependencies from platform -->
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>crowd-password-encoders</artifactId>
                <version>${crowd.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk15on</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk18on</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>crowd-db-config-password-cipher-encryptors</artifactId>
                <version>${crowd.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk15on</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.sf.ehcache</groupId>
                        <artifactId>ehcache</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>embedded-crowd-core</artifactId>
                <version>${crowd.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-client</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>javax.servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.minidev</groupId>
                        <artifactId>json-smart</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.sf.ehcache</groupId>
                        <artifactId>ehcache</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.sf.ehcache.internal</groupId>
                        <artifactId>ehcache</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>opensymphony</groupId>
                        <artifactId>propertyset</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.commons</groupId>
                        <artifactId>commons-collections4</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>crowd-api</artifactId>
                <version>${crowd.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>crowd-core</artifactId>
                <version>${crowd.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.jersey.core</groupId>
                        <artifactId>jersey-client</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.crowd</groupId>
                <artifactId>crowd-azure-ad</artifactId>
                <version>${crowd.version}</version>
                <exclusions>
                    <!-- crowd's upgrade to jersey 2 client added these glassfish jersey deps,
                         which broke our REST V2 resources -->
                    <exclusion>
                        <groupId>org.glassfish.jersey.core</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.jersey.media</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.jersey.inject</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.atlassian.hibernate</groupId>
                <artifactId>atlassian-hibernate5.2-extras</artifactId>
                <version>${atl.hibernate.extras.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.keystore</groupId>
                <artifactId>atlassian-keystore</artifactId>
                <version>${atl.keystore.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins</groupId>
                <artifactId>atlassian-remote-event-producer-plugin</artifactId>
                <version>${atlassian-remote-event}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.stash.plugins</groupId>
                <artifactId>stash-remote-event-bitbucket-server-spi</artifactId>
                <version>${atl.stash.remote.event}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.extras</groupId>
                <artifactId>atlassian-extras-common</artifactId>
                <version>${atlassian-extras.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.extras</groupId>
                <artifactId>atlassian-extras-decoder-api</artifactId>
                <version>${atlassian-extras.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.extras</groupId>
                <artifactId>atlassian-extras-decoder-v2</artifactId>
                <version>${atlassian-extras.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.integration.jira</groupId>
                <artifactId>jira-integration-page-objects</artifactId>
                <version>${jira.integration.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.johnson</groupId>
                <artifactId>atlassian-johnson-plugins</artifactId>
                <version>${atlassian-johnson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.johnson</groupId>
                <artifactId>atlassian-johnson-spring</artifactId>
                <version>${atlassian-johnson.version}</version>
            </dependency>

            <!-- Platform overrides -->
            <dependency>
                <groupId>com.atlassian.plugins</groupId>
                <artifactId>atlassian-plugins-spring</artifactId>
                <version>${plugins.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aop</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.atlassian.oauth2</groupId>
                <artifactId>oauth2-client-plugin</artifactId>
                <version>${atlassian-oauth2.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.nimbusds</groupId>
                        <artifactId>content-type</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>commons-digester</groupId>
                <artifactId>commons-digester</artifactId>
                <version>2.1</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.security.serialblocklist</groupId>
                <artifactId>serialblocklist</artifactId>
                <version>${serialblocklist.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.security.objectfilter</groupId>
                <artifactId>java11-objectfilter</artifactId>
                <version>${java11-objectfilter.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.selenium</groupId>
                <artifactId>atlassian-pageobjects-api</artifactId>
                <version>${atl.selenium.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.inject</groupId>
                        <artifactId>guice</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.selenium</groupId>
                <artifactId>atlassian-pageobjects-elements</artifactId>
                <version>${atl.selenium.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit-dep</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.aui</groupId>
                <artifactId>aui-pageobjects</artifactId>
                <version>${atl.aui.pageobjects.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.selenium</groupId>
                <artifactId>atlassian-webdriver-core</artifactId>
                <version>${atl.selenium.version}</version>
            </dependency>

            <!-- This soy-template-renderer dependency is not provided by the platform -->
            <dependency>
                <groupId>com.atlassian.soy</groupId>
                <artifactId>atlassian-soy-spring-mvc-support</artifactId>
                <version>${soy-template-renderer.version}</version>
            </dependency>
            <!-- This soy-template-renderer dependency _IS_ in the platform but needs an exclusion -->
            <dependency>
                <groupId>com.atlassian.soy</groupId>
                <artifactId>soy-template-plugin</artifactId>
                <version>${soy-template-renderer.version}</version>
                <exclusions>
                    <!-- Old jakarta.inject-api GAV -->
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.atlassian.troubleshooting</groupId>
                <artifactId>api</artifactId>
                <version>${atst.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.troubleshooting</groupId>
                <artifactId>plugin-bitbucket</artifactId>
                <version>${atst.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>opensymphony</groupId>
                        <artifactId>propertyset</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.sanselan</groupId>
                        <artifactId>sanselan</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>osuser</groupId>
                        <artifactId>osuser</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.atlassian.support</groupId>
                <artifactId>stp-spi</artifactId>
                <version>${stp.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.botocss</groupId>
                <artifactId>botocss-core</artifactId>
                <version>${botocss.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.uri</groupId>
                <artifactId>atlassian-uri</artifactId>
                <version>${atl.uri.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.util</groupId>
                <artifactId>content-cache</artifactId>
                <version>${atl.utl.contentcache.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.zdu</groupId>
                <artifactId>bitbucket-zdu-plugin</artifactId>
                <version>${zdu.plugin.version}</version>
            </dependency>

            <!-- Installer Dependencies -->
            <dependency>
                <groupId>com.install4j</groupId>
                <artifactId>install4j-runtime</artifactId>
                <version>${install4j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.openclover</groupId>
                <artifactId>clover</artifactId>
                <version>${clover.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcpg-lts8on</artifactId>
                <version>${bouncycastle.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.libversion}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.github.albfernandez</groupId>
                <artifactId>juniversalchardet</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>com.github.tomakehurst</groupId>
                <artifactId>wiremock-jre8</artifactId>
                <version>${wiremock.libversion}</version>
                <exclusions>
                    <!-- Old jakarta.servlet-api GAV -->
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>javax.servlet-api</artifactId>
                    </exclusion>
                    <!-- Excluding since we prefer the asm version that atlassian-rest brings in -->
                    <exclusion>
                        <groupId>org.ow2.asm</groupId>
                        <artifactId>asm</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>annotations</artifactId>
                <version>${findbugs.annotations.version}</version>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast</artifactId>
                <version>${hazelcast.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.sourceforge.findbugs</groupId>
                        <artifactId>annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast</artifactId>
                <version>${hazelcast.libversion}</version>
                <classifier>tests</classifier>
                <exclusions>
                    <exclusion>
                        <groupId>net.sourceforge.findbugs</groupId>
                        <artifactId>annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast-hibernate53</artifactId>
                <version>${hazelcast-hibernate5.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.sourceforge.findbugs</groupId>
                        <artifactId>annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast-spring</artifactId>
                <version>${hazelcast.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.sourceforge.findbugs</groupId>
                        <artifactId>annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast-wm</artifactId>
                <version>${hazelcast-wm.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.sourceforge.findbugs</groupId>
                        <artifactId>annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.google.inject</groupId>
                <artifactId>guice</artifactId>
                <version>${google.guice.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                <version>${protobuf.libversion}</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>${commons-lang.version}</version>
            </dependency>
            <dependency>
                <groupId>io.github.resilience4j</groupId>
                <artifactId>resilience4j-circuitbreaker</artifactId>
                <version>1.7.1</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-api</artifactId>
                <version>${grpc.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-context</artifactId>
                <version>${grpc.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-core</artifactId>
                <version>${grpc.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.android</groupId>
                        <artifactId>annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-netty</artifactId>
                <version>${grpc.libversion}</version>
                <exclusions>
                    <!-- For phase 2, since the agent will be colocated, we shouldn't need proxy support. This
                         can be reconsidered during phase 3, if necessary, or deferred until even later. -->
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-handler-proxy</artifactId>
                    </exclusion>
                    <!-- Force our version of netty -->
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-transport-native-unix-common</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-protobuf</artifactId>
                <version>${grpc.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-stub</artifactId>
                <version>${grpc.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-api</artifactId>
                <version>${jjwt.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-impl</artifactId>
                <version>${jjwt.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-jackson</artifactId>
                <version>${jjwt.libversion}</version>
            </dependency>
            <!-- The following allow control over the Netty version in use, rather than using whatever version
                 grpc-netty happens to depend on in a given release. -->
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-buffer</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-http</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-http2</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-common</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-handler</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-resolver</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${netty.tcnative.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-classes</artifactId>
                <version>${netty.tcnative.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-transport</artifactId>
                <version>${netty.libversion}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-transport-native-epoll</artifactId>
                <version>${netty.libversion}</version>
                <classifier>linux-x86_64</classifier>
            </dependency>
            <dependency>
                <groupId>com.sun.activation</groupId>
                <artifactId>jakarta.activation</artifactId>
                <version>${jakarta-activation.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${jakarta-jaxb.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.xml.ws</groupId>
                <artifactId>jakarta.xml.ws-api</artifactId>
                <version>${jakarta-xml-ws.version}</version>
            </dependency>
            <!-- When we remove support for Jersey 1.x, this can probably change to jakarta.ws.rs:jakarta.ws.rs-api -->
            <dependency>
                <groupId>javax.ws.rs</groupId>
                <artifactId>jsr311-api</artifactId>
                <version>${jaxrs.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.zaxxer</groupId>
                <artifactId>HikariCP</artifactId>
                <version>${hikaricp.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.zaxxer</groupId>
                <artifactId>nuprocess</artifactId>
                <version>2.0.6</version>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>${commons.beanutils.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-validator</groupId>
                <artifactId>commons-validator</artifactId>
                <version>${commons.validator.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-configuration2</artifactId>
                <version>2.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>1.26.1</version>
            </dependency>

            <dependency>
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
                <version>${xmlapis.libversion}</version>
            </dependency>
            <!-- There is no jakarta equivalent for javax.el-api until 3.0.2 -->
            <dependency>
                <groupId>javax.el</groupId>
                <artifactId>javax.el-api</artifactId>
                <version>2.2.5</version>
            </dependency>
            <dependency>
                <groupId>jakarta.persistence</groupId>
                <artifactId>jakarta.persistence-api</artifactId>
                <version>2.2.3</version>
            </dependency>
            <dependency>
                <groupId>jakarta.servlet.jsp</groupId>
                <artifactId>jakarta.servlet.jsp-api</artifactId>
                <version>2.3.6</version>
            </dependency>
            <dependency>
                <groupId>jaxen</groupId>
                <artifactId>jaxen</artifactId>
                <version>1.2.0-atlassian-2</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.el</artifactId>
                <version>3.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>6.2.5.Final</version>
                <exclusions>
                    <!-- Old jakarta.validation-api GAV -->
                    <exclusion>
                        <groupId>javax.validation</groupId>
                        <artifactId>validation-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.jboss.logging</groupId>
                <artifactId>jboss-logging</artifactId>
                <version>3.3.2.Final</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest</artifactId>
                <version>${hamcrest.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
                <version>${hamcrest.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-library</artifactId>
                <version>${hamcrest.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.exparity</groupId>
                <artifactId>hamcrest-date</artifactId>
                <version>${hamcrest.date.version}</version>
            </dependency>
            <dependency>
                <groupId>org.tuckey</groupId>
                <artifactId>urlrewritefilter</artifactId>
                <version>4.0.4</version>
            </dependency>
            <dependency>
                <groupId>net.minidev</groupId>
                <artifactId>json-smart</artifactId>
                <version>${json-smart.version}</version>
                <!-- Excluding since we prefer the asm version that atlassian-rest brings in -->
                <exclusions>
                    <exclusion>
                        <groupId>org.ow2.asm</groupId>
                        <artifactId>asm</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>net.logstash.logback</groupId>
                <artifactId>logstash-logback-encoder</artifactId>
                <version>${logstash-logback.libversion}</version>
            </dependency>
            <dependency>
                <groupId>net.sf.json-lib</groupId>
                <artifactId>json-lib</artifactId>
                <version>2.4</version>
                <classifier>jdk15</classifier>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.nekohtml</groupId>
                <artifactId>nekohtml</artifactId>
                <version>1.9.22</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpcomponents.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
                <version>${tomcat.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-el</artifactId>
                <version>${tomcat.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-websocket</artifactId>
                <version>${tomcat.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-jasper</artifactId>
                <version>${tomcat.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${aspectj.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.libversion}</version>
            </dependency>
            <!-- Liquibase's SLF4J code was removed in 4.0, so we need this extra library to route its
                 logging to SLF4J rather than JUL. -->
            <dependency>
                <groupId>com.mattbertolini</groupId>
                <artifactId>liquibase-slf4j</artifactId>
                <version>${liquibase-slf4j.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.janino</groupId>
                <artifactId>janino</artifactId>
                <version>2.7.8</version>
            </dependency>
            <dependency>
                <groupId>org.dbunit</groupId>
                <artifactId>dbunit</artifactId>
                <version>2.7.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.oracle.database.jdbc</groupId>
                        <artifactId>ojdbc6</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.oracle.database.jdbc</groupId>
                        <artifactId>ojdbc8</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.oracle.database.jdbc</groupId>
                        <artifactId>ojdbc10</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.postgresql</groupId>
                        <artifactId>postgresql</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.ehcache</groupId>
                <artifactId>ehcache</artifactId>
                <version>3.10.0</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${hibernate.libversion}</version>
                <exclusions>
                    <!-- Old jakarta.activation-api GAV -->
                    <exclusion>
                        <groupId>javax.activation</groupId>
                        <artifactId>javax.activation-api</artifactId>
                    </exclusion>
                    <!-- Old jakarta.persistence-api GAV -->
                    <exclusion>
                        <groupId>javax.persistence</groupId>
                        <artifactId>javax.persistence-api</artifactId>
                    </exclusion>
                    <!-- Old jakarta.xml.bind-api GAV -->
                    <exclusion>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.dom4j</groupId>
                        <artifactId>dom4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.javassist</groupId>
                        <artifactId>javassist</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-jcache</artifactId>
                <version>${hibernate.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit</artifactId>
                <version>4.2.0.201601211800-r</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-jcl</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-mock</artifactId>
                <version>${gemini.version}</version>
                <exclusions>
                    <!-- Old jakarta.inject-api GAV -->
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
                <version>${spring.boot.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-autoconfigure</artifactId>
                <version>${spring.boot.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-loader</artifactId>
                <version>${spring.boot.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>${spring.boot.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-json</artifactId>
                <version>${spring.boot.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
                <version>${spring.boot.libversion}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <version>${spring.boot.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish</groupId>
                        <artifactId>jakarta.el</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring.boot.libversion}</version>
            </dependency>
            <dependency>
                <groupId>xmlunit</groupId>
                <artifactId>xmlunit</artifactId>
                <version>1.6</version>
            </dependency>

            <dependency>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-core</artifactId>
                <version>${liquibase.version}</version>
                <exclusions>
                    <!-- Old jakarta.xml.bind-api GAV -->
                    <exclusion>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Database drivers -->
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>2.1.214</version>
            </dependency>
            <!-- deprecated, to be removed in a future release subject to discussions around removal approach -->
            <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <version>2.7.2</version>
                <classifier>jdk8</classifier>
            </dependency>

            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito.libversion}</version>
            </dependency>
            <!-- Mockito preconfigured inline mock maker. This is required to be able to spy certain objects correctly
                 in Java 17+, and will be used as the default in Mockito 5+ -->
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-inline</artifactId>
                <version>${mockito.libversion}</version>
            </dependency>
            <!-- Platform defines byte-buddy version but doesn't define the agent version (which Mockito uses).
                 Lock the agent version so Mockito is using the same version of both. -->
            <dependency>
                <groupId>net.bytebuddy</groupId>
                <artifactId>byte-buddy-agent</artifactId>
                <version>${byte-buddy.version}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.http</groupId>
                <artifactId>atlassian-http</artifactId>
                <version>${atlassian-http.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.atlassian.qunit</groupId>
                <artifactId>atlassian-qunit-plugin</artifactId>
                <version>${atlassian.qunit.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.qunit</groupId>
                <artifactId>atlassian-qunit-plugin-util</artifactId>
                <version>${atlassian.qunit.version}</version>
            </dependency>

            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>5.2.0</version>
            </dependency>
            <dependency>
                <groupId>com.jayway.jsonpath</groupId>
                <artifactId>json-path-assert</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>de.schlichtherle.truezip</groupId>
                <artifactId>truezip-file</artifactId>
                <version>${truezip.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>de.schlichtherle.truezip</groupId>
                        <artifactId>truezip-swing</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>de.schlichtherle.truezip</groupId>
                <artifactId>truezip-driver-zip</artifactId>
                <version>${truezip.libversion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>de.schlichtherle.truezip</groupId>
                        <artifactId>truezip-swing</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk15on</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>de.schlichtherle.truezip</groupId>
                <artifactId>truezip-driver-tar</artifactId>
                <version>${truezip.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.integration.jira</groupId>
                <artifactId>jira-integration-api</artifactId>
                <version>${jira.integration.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.integration.jira</groupId>
                <artifactId>jira-integration-plugin</artifactId>
                <version>${jira.integration.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.integration.jira</groupId>
                <artifactId>jira-integration-spi</artifactId>
                <version>${jira.integration.version}</version>
            </dependency>
            <!-- Flaky Test Reporter -->
            <dependency>
                <groupId>com.atlassian</groupId>
                <artifactId>flaky-test-reporter</artifactId>
                <version>3.2.2</version>
                <exclusions>
                    <!-- Old jakarta.inject-api GAV -->
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.sun.mail</groupId>
                <artifactId>jakarta.mail</artifactId>
                <version>${jakarta-mail.version}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark</artifactId>
                <version>${commonmark.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-autolink</artifactId>
                <version>${commonmark.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-strikethrough</artifactId>
                <version>${commonmark.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-tables</artifactId>
                <version>${commonmark.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-heading-anchor</artifactId>
                <version>${commonmark.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-image-attributes</artifactId>
                <version>${commonmark.libversion}</version>
            </dependency>
            <dependency>
                <groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
                <artifactId>owasp-java-html-sanitizer</artifactId>
                <version>${owasp-java-html-sanitizer.libversion}</version>
            </dependency>

            <dependency>
                <groupId>au.com.dius</groupId>
                <artifactId>pact-jvm-consumer-junit_2.11</artifactId>
                <version>${pact.version}</version>
            </dependency>
            <dependency>
                <groupId>au.com.dius</groupId>
                <artifactId>pact-jvm-provider-junit_2.11</artifactId>
                <version>${pact.version}</version>
            </dependency>

            <dependency>
                <groupId>com.icegreen</groupId>
                <artifactId>greenmail</artifactId>
                <version>1.5.14</version>
                <exclusions>
                    <!-- Old jakarta.mail-api GAV -->
                    <exclusion>
                        <groupId>com.sun.mail</groupId>
                        <artifactId>javax.mail</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-text-patterns</artifactId>
                <version>0.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.octo.captcha</groupId>
                <artifactId>jcaptcha-api</artifactId>
                <version>2.0-alpha-1</version>
            </dependency>
            <dependency>
                <groupId>com.octo.captcha</groupId>
                <artifactId>jcaptcha</artifactId>
                <version>2.0-alpha-1</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.jhlabs</groupId>
                <artifactId>filters</artifactId>
                <version>2.0.235-1</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.selenium</groupId>
                <artifactId>atlassian-visual-comparison</artifactId>
                <version>${atl.visual.comparison.version}</version>
            </dependency>

            <!-- Plugin framework dependencies -->

            <!-- The Gemini Blueprint artifacts -->
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-core</artifactId>
                <version>${gemini.version}</version>
                <exclusions>
                    <!-- Old jakarta.inject-api GAV -->
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.servicemix.bundles</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-extender</artifactId>
                <version>${gemini.version}</version>
                <exclusions>
                    <!-- Old jakarta.inject-api GAV -->
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.servicemix.bundles</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- The Spring framework -->
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-spring-bundle</artifactId>
                <version>${platform.dependencies.version}</version>
            </dependency>

            <!-- Spring Dependencies -->
            <dependency>
                <groupId>org.apache.servicemix.bundles</groupId>
                <artifactId>org.apache.servicemix.bundles.velocity</artifactId>
                <version>${servicemix.velocity.libversion}</version>
            </dependency>

            <!-- Search plugin dependencies -->
            <dependency>
                <groupId>com.atlassian.elasticsearch.client</groupId>
                <artifactId>elasticsearch-client</artifactId>
                <version>${atlassian-elasticsearch-client.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.elasticsearch.client</groupId>
                <artifactId>elasticsearch-client-apache-httpclient</artifactId>
                <version>${atlassian-elasticsearch-client.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.elasticsearch.client</groupId>
                <artifactId>elasticsearch-client-gson</artifactId>
                <version>${atlassian-elasticsearch-client.version}</version>
            </dependency>
            <!-- Necessary because we exclude the same transient dependency due to a security vulnerability in the
                 version that is included in aws-signing-request-interceptor -->
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-core</artifactId>
                <version>${aws.java.sdk.core.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.re2j</groupId>
                <artifactId>re2j</artifactId>
                <version>${re2j.version}</version>
            </dependency>
            <dependency>
                <groupId>io.reactivex</groupId>
                <artifactId>rxjava</artifactId>
                <version>${rxjava.version}</version>
            </dependency>
            <dependency>
                <groupId>vc.inreach.aws</groupId>
                <artifactId>aws-signing-request-interceptor</artifactId>
                <version>0.0.22</version>
            </dependency>
            <dependency>
                <groupId>com.ryantenney.metrics</groupId>
                <artifactId>metrics-spring</artifactId>
                <version>${metrics-spring.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aop</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context-support</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr4-runtime</artifactId>
                <version>${antlr4.version}</version>
            </dependency>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${org.snakeyaml.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.elasticsearch.client</groupId>
                <artifactId>elasticsearch-client-test-util</artifactId>
                <version>${atlassian-elasticsearch-client.version}</version>
            </dependency>
            <dependency>
                <groupId>com.pholser</groupId>
                <artifactId>junit-quickcheck-core</artifactId>
                <version>${pholser.version}</version>
            </dependency>
            <dependency>
                <groupId>com.pholser</groupId>
                <artifactId>junit-quickcheck-generators</artifactId>
                <version>${pholser.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>${apache-log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${apache-log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-to-slf4j</artifactId>
                <version>${apache-log4j.version}</version>
            </dependency>

            <!-- OpenSearch distribution -->
            <dependency>
                <groupId>org.opensearch.distribution.tar</groupId>
                <artifactId>opensearch-min-security-nojdk</artifactId>
                <version>${opensearch.atlassian.hosted.version}</version>
                <type>tar.gz</type>
            </dependency>
            <!-- This is here so our dependency version update tool picks up OpenSearch dependencies -->
            <dependency>
                <groupId>org.opensearch</groupId>
                <artifactId>opensearch</artifactId>
                <version>${opensearch.version}</version>
            </dependency>
            <!-- REST doc (Swagger) dependencies -->
            <dependency>
                <groupId>io.swagger.core.v3</groupId>
                <artifactId>swagger-jaxrs2</artifactId>
                <version>${swagger-version}</version>
                <!-- We exclude javassist, since swagger uses an old version -->
                <exclusions>
                    <exclusion>
                        <groupId>io.github.classgraph</groupId>
                        <artifactId>classgraph</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.javassist</groupId>
                        <artifactId>javassist</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- REST doc (Swagger) dependencies -->
            <dependency>
                <groupId>io.swagger.core.v3</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>${swagger-version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.dc.swagger</groupId>
                <artifactId>annotations</artifactId>
                <version>${dc-swagger-version}</version>
            </dependency>

            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers</artifactId>
                <version>${testcontainers.version}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>vault</artifactId>
                <version>${testcontainers.version}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>localstack</artifactId>
                <version>${testcontainers.version}</version>
            </dependency>
            <dependency>
                <groupId>org.skyscreamer</groupId>
                <artifactId>jsonassert</artifactId>
                <version>${jsonassert.libversion}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.atlassian.lesscss</groupId>
                    <artifactId>lesscss-maven-plugin</artifactId>
                    <version>${less-transformer.version}</version>
                    <configuration>
                        <plugins>
                            <plugin>
                                <groupId>com.atlassian.aui</groupId>
                                <artifactId>auiplugin</artifactId>
                                <version>${aui.version}</version>
                            </plugin>
                        </plugins>
                    </configuration>
                    <executions>
                        <execution>
                            <id>compile-less</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>amps-dispatcher-maven-plugin</artifactId>
                    <version>${amps.libversion}</version>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>amps-maven-plugin</artifactId>
                    <version>${amps.libversion}</version>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>api-compat-maven-plugin</artifactId>
                    <version>0.9.1</version>
                    <configuration>
                        <includes>
                            <include>com.atlassian.bitbucket.**</include>
                        </includes>
                        <excludes>
                            <exclude>com.atlassian.bitbucket.internal.**</exclude>
                            <exclude>com.atlassian.bitbucket.**.internal.**</exclude>
                        </excludes>
                        <suppressionsFile>${basedir}/src/test/etc/api-compat-suppressions.txt</suppressionsFile>
                        <traverse>true</traverse>
                        <oldVersion>
                            <dependency>
                                <groupId>${project.groupId}</groupId>
                                <artifactId>${project.artifactId}</artifactId>
                                <version>${api.compatibility.check.version}</version>
                            </dependency>
                        </oldVersion>
                        <newVersion>
                            <dependency>
                                <groupId>${project.groupId}</groupId>
                                <artifactId>${project.artifactId}</artifactId>
                                <version>${project.version}</version>
                            </dependency>
                        </newVersion>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <id>api-compat</id>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>bamboo-maven-plugin</artifactId>
                    <version>${amps.libversion}</version>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>bitbucket-maven-plugin</artifactId>
                    <version>${amps.libversion}</version>
                    <configuration>
                        <extractDependencies>false</extractDependencies>
                        <extractTestDependencies>false</extractTestDependencies>
                        <skipAllPrompts>true</skipAllPrompts>
                        <skipRestDocGeneration>${skip.plugins.rest.docs}</skipRestDocGeneration> <!-- AMPS-1124 -->
                        <systemPropertyVariables>
                            <cargo.servlet.uriencoding>${source.encoding}</cargo.servlet.uriencoding>
                            <file.encoding>${source.encoding}</file.encoding>
                            <sun.jnu.encoding>${source.encoding}</sun.jnu.encoding>
                            <!-- As of Applinks 9.1.4, localhost URLs are not allowed to be used as applinks (see VULN-940591) -->
                            <applinks.allow.all.hosts>true</applinks.allow.all.hosts>
                        </systemPropertyVariables>
                    </configuration>
                </plugin>
                <!--
                    Defines the ${docs.version} property using the project's version. Do not define a default
                    for ${docs.version} as the install4j-maven-plugin will use the default even if it
                    is correctly changed by this plugin.
                -->
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>docsversion-maven-plugin</artifactId>
                    <version>2.0.0</version>
                    <executions>
                        <execution>
                            <id>set-docs-version-property</id>
                            <phase>initialize</phase>
                            <goals>
                                <goal>set-property</goal>
                            </goals>
                            <configuration>
                                <property>docs.version</property>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>1.0.1</version>
                    <configuration>
                        <nonMavenDependenciesFile>third-party-licensing/missing-non-maven-dependencies.properties</nonMavenDependenciesFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>product-deployment-maven-plugin</artifactId>
                    <version>7.1.3</version>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>smartass-maven-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>

                <plugin>
                    <groupId>com.atlassian.minify</groupId>
                    <artifactId>minify-maven-plugin</artifactId>
                    <version>${minify.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>compress-frontend-resources</id>
                            <goals>
                                <goal>minify-webresources</goal>
                            </goals>
                            <configuration>
                                <resourceBaseDirectory>${project.build.directory}/classes</resourceBaseDirectory>
                                <pluginXmlFiles>
                                    <pluginXmlFile>${basedir}/src/main/resources/atlassian-plugin.xml</pluginXmlFile>
                                </pluginXmlFiles>
                                <outputDirectory>${project.build.directory}/classes</outputDirectory>
                                <minifierLogLevel>ERROR</minifierLogLevel>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>
                    <version>${fe.plugin.version}</version>
                    <configuration>
                        <workingDirectory>${basedir}</workingDirectory>
                        <nodeVersion>v${fe.node.version}</nodeVersion>
                        <npmVersion>${fe.npm.version}</npmVersion>
                        <installDirectory>${fe.node.installdir}</installDirectory>
                        <npmDownloadRoot>https://registry.npmjs.org/npm/-/</npmDownloadRoot>
                        <environmentVariables>
                            <BABEL_ENV>production</BABEL_ENV>
                        </environmentVariables>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>com.google.code.maven-replacer-plugin</groupId>
                    <artifactId>replacer</artifactId>
                    <version>1.5.3</version>
                </plugin>

                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.38.1</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>5.1.9</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.1.2</version>
                    <configuration>
                        <configLocation>checkstyle.xml</configLocation>
                        <encoding>${source.encoding}</encoding>
                        <includeTestSourceDirectory>true</includeTestSourceDirectory>
                        <consoleOutput>true</consoleOutput>
                    </configuration>
                    <dependencies>
                        <!-- If you update versions for Checkstyle or either of the custom check jars, you need to
                             make matching changes in etc/git-hooks/pre-commit -->
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>8.42</version>
                        </dependency>
                        <dependency>
                            <groupId>com.atlassian.bitbucket.server</groupId>
                            <artifactId>bitbucket-checkstyle</artifactId>
                            <version>3.0.4</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>checkstyle</groupId>
                                    <artifactId>checkstyle</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                        <dependency>
                            <groupId>com.atlassian</groupId>
                            <artifactId>checkstyle-custom-checks</artifactId>
                            <version>2.0.0</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>checkstyle</groupId>
                                    <artifactId>checkstyle</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>3.3.0</version>
                    <executions>
                        <execution>
                            <id>check-dependencies</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <phase>validate</phase>
                            <configuration>
                                <rules>
                                    <bannedDependencies>
                                        <excludes>
                                            <!-- Use Bouncy Castle lts8on artifacts -->
                                            <exclude>org.bouncycastle:*</exclude>
                                            <!-- Warning - Velocity 1.7 introduces a performance degradation. Upgrade with care. -->
                                            <exclude>org.apache.velocity:*:1.7</exclude>

                                            <!-- Old jakarta.*-api GAVs -->
                                            <exclude>javax.activation</exclude>
                                            <exclude>com.sun.activation:javax.activation</exclude><!-- Implementation of javax.activation -->
                                            <exclude>javax.annotation</exclude>
                                            <exclude>javax.inject</exclude>
                                            <exclude>javax.mail</exclude>
                                            <exclude>com.sun.mail:javax.mail</exclude><!-- Implementation of javax.mail -->
                                            <exclude>javax.persistence</exclude>
                                            <exclude>javax.servlet</exclude>
                                            <exclude>javax.servlet.jsp</exclude>
                                            <exclude>javax.validation</exclude>
                                            <exclude>javax.xml.bind</exclude>
                                            <exclude>javax.xml.ws</exclude>
                                        </excludes>
                                        <includes>
                                            <include>org.bouncycastle:bcpg-lts8on:*</include>
                                            <include>org.bouncycastle:bcpkix-lts8on:*</include>
                                            <include>org.bouncycastle:bcprov-lts8on:*</include>
                                            <include>org.bouncycastle:bcutil-lts8on:*</include>
                                        </includes>
                                        <message>Please check dependency:tree for banned dependencies</message>
                                        <searchTransitive>true</searchTransitive>
                                    </bannedDependencies>
                                </rules>
                                <fail>true</fail>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.21.0</version>
                    <configuration>
                        <argLine>-Dxvfb.enable=${xvfb.enable}</argLine>
                        <skipTests>${skipITs}</skipTests>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.plugin.version}</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>run pmd</id>
                            <phase>none</phase>
                        </execution>
                    </executions>
                    <version>${maven.pmd.plugin.version}</version>
                    <configuration>
                        <aggregate>true</aggregate>
                        <includeTests>true</includeTests>
                        <linkXRef>false</linkXRef>
                        <rulesets>
                            <ruleset>${user.dir}/etc/code-insights/pmd-rules.xml</ruleset>
                        </rulesets>
                        <showPmdLog>true</showPmdLog>
                        <sourceEncoding>utf-8</sourceEncoding>
                        <targetJdk>1.8</targetJdk>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                    <configuration>
                        <!-- The atlassian default pom provides some defaults that are unhelpful to our release process
                             Some are semi-useful, so we will add them back in in our own process (like including the
                             release profile).
                             So here we replace them with ones we control (see the 'release-*' profiles below -->
                        <arguments>${arguments}</arguments>
                        <useReleaseProfile>${useReleaseProfile}</useReleaseProfile>
                        <!-- This is the default from the parent poms, but we'll set it here in case they change it -->
                        <preparationGoals>clean install</preparationGoals>
                        <!-- http://jira.codehaus.org/browse/MRELEASE-459 releaseProfiles doesn't work.
                             Make sure you pass the appropriate -P flags on the command line (see the 'release-*'
                             profiles below for details).
                             This setting is _not_ used in the release process any more and is really only here for
                             documentation purposes at this point. -->
                        <releaseProfiles>release,amps.prepare,full,source,source-release</releaseProfiles>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <escapeString>\</escapeString>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-scm-plugin</artifactId>
                    <version>1.11.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.12.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.21.0</version>
                    <configuration>
                        <argLine>${surefire.argLine}</argLine>
                        <excludedGroups>${surefire.excludedGroups}</excludedGroups>
                        <trimStackTrace>false</trimStackTrace>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.1</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>1.4</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>${maven.findbugs.plugin.version}</version>
                    <configuration>
                        <effort>Max</effort>
                        <threshold>Low</threshold>
                        <onlyAnalyze>${findbugs.only.analyze}</onlyAnalyze>
                        <omitVisitors>BadHexadecimalConversionDetector</omitVisitors>
                        <excludeFilterFile>${findbugs.excludefilterfile.path}</excludeFilterFile>
                        <includeFilterFile>${findbugs.includefilterfile.path}</includeFilterFile>
                        <plugins>
                            <plugin>
                                <groupId>com.h3xstream.findsecbugs</groupId>
                                <artifactId>findsecbugs-plugin</artifactId>
                                <version>${com.h3xstream.findsecbugs.libversion}</version>
                            </plugin>
                        </plugins>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>tidy-maven-plugin</artifactId>
                    <version>1.1.0</version>
                    <executions>
                        <execution>
                            <id>validate</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.15.0</version>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.install4j</groupId>
                    <artifactId>install4j-maven-plugin</artifactId>
                    <version>1.1.2</version>
                </plugin>

                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring.boot.libversion}</version>
                </plugin>

                <plugin>
                    <groupId>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>0.6.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <id>validate-base-poms</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <skip>${skipBasePomValidation}</skip>
                            <executable>${project.basedir}/etc/validation/validate-base-poms.sh</executable>
                            <arguments>
                                <argument>${project.parent.version}</argument>
                                <argument>${platform.dependencies.version}</argument>
                            </arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.atlassian.bitbucket.server</groupId>
                <artifactId>bitbucket-i18n-maven-plugin</artifactId>
                <version>3.2.0</version>
                <inherited>false</inherited>
                <configuration>
                    <allowUtf8>true</allowUtf8>
                    <ignoredFiles>
                        <ignoredFile>aui-experimental.min.js</ignoredFile>
                        <ignoredFile>aui-experimental.js</ignoredFile>
                        <ignoredFile>aui-all.js</ignoredFile>
                        <ignoredFile>aui.min.js</ignoredFile>
                        <ignoredFile>aui-all.js</ignoredFile>
                        <ignoredFile>aui.js</ignoredFile>
                        <ignoredFile>func-test/test-support-plugin/src/main/java/com/atlassian/bitbucket/pipelines/DummyBuildServerClient.java</ignoredFile>
                    </ignoredFiles>
                    <ignoredProperties>
                        <ignoredProperty>embedded.crowd.directory.list.menu</ignoredProperty>
                        <ignoredProperty>test</ignoredProperty>
                        <ignoredProperty>bitbucket.web.example.property.which.uses.utf8</ignoredProperty>
                    </ignoredProperties>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openclover</groupId>
                <artifactId>clover-maven-plugin</artifactId>
                <version>${clover.libversion}</version>
                <configuration>
                    <encoding>${source.encoding}</encoding>
                    <singleCloverDatabase>false</singleCloverDatabase>
                    <historyDir>${clover.historyDir}</historyDir>
                    <generateHistorical>true</generateHistorical>
                    <includesTestSourceRoots>false</includesTestSourceRoots>
                    <reportDescriptor>${clover.report.path}</reportDescriptor>
                    <contextFilters>interface</contextFilters>
                    <includes>
                        <include>**/com/atlassian/stash/**/*.java</include>
                        <include>**/com/atlassian/bitbucket/**/*.java</include>
                    </includes>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.openclover</groupId>
                        <artifactId>clover</artifactId>
                        <version>${clover.libversion}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>install-files-maven-plugin</artifactId>
                <version>1.0.1</version>
                <inherited>false</inherited>
                <configuration>
                    <repositoryFolder>target/mvn-repo</repositoryFolder>
                </configuration>
                <executions>
                    <execution>
                        <id>do-install</id>
                        <inherited>false</inherited>
                        <goals>
                            <goal>install-files</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- we install node & npm, and do "npm install" in the root POM to save having to do it in webapp plus
                every bundled plugin that uses node to do it's frontend build. The caveat is that if  you're building a
                plugin directly, and dependencies in package.json, or the node version, change you need to
                re-build from root. -->
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <inherited>false</inherited>
                        <id>install node and npm</id>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                    </execution>
                    <execution>
                        <inherited>false</inherited>
                        <id>node_modules version check</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <skip>${skipNpmInstall}</skip>
                            <arguments>run node-modules-version-check</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <inherited>false</inherited>
                        <id>npm install</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <skip>${skipNpmInstall}</skip>
                            <arguments>${fe.npm.install.cmd} --no-optional</arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.12.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <!-- Kill the hammer rule with fire, because it's pointless noise and a waste of time to
                             continuously update as our milestone and release candidate dependencies change -->
                        <id>ban-milestones-and-release-candidates</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>enforce-build-environment</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>${jdkLevel}</version>
                                </requireJavaVersion>
                                <requireMavenVersion>
                                    <!-- Relax the requirements from the parent pom.
                                         Windows agents only have maven 3.5 available but appear to build fine  -->
                                    <version>[3.5,)</version>
                                </requireMavenVersion>
                                <requirePluginVersions>
                                    <unCheckedPluginList>
                                        com.atlassian.bitbucket.server:bitbucket-i18n-maven-plugin,
                                        com.atlassian.maven.plugins:bitbucket-maven-plugin,
                                    </unCheckedPluginList>
                                    <message>Best practice is to always define plugin versions!</message>
                                </requirePluginVersions>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <!-- Since we have no license files to copy, we disable the copy-license execution
                             inherited from base-pom. For more details, see:
                             https://extranet.atlassian.com/jira/browse/BUILDENG-13628 -->
                        <id>copy-license</id>
                        <phase>none</phase>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>${skipTests}</skipTests>
                    <trimStackTrace>false</trimStackTrace>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>${maven.findbugs.plugin.version}</version>
                <configuration>
                    <onlyAnalyze>${findbugs.only.analyze}</onlyAnalyze>
                    <xmlOutput>true</xmlOutput> <!--use XML output for the Bamboo findbugs plugin-->
                    <effort>Max</effort>
                    <threshold>Low</threshold>
                    <omitVisitors>BadHexadecimalConversionDetector</omitVisitors>
                    <excludeFilterFile>${findbugs.excludefilterfile.path}</excludeFilterFile>
                    <includeFilterFile>${findbugs.includefilterfile.path}</includeFilterFile>
                    <plugins>
                        <plugin>
                            <groupId>com.h3xstream.findsecbugs</groupId>
                            <artifactId>findsecbugs-plugin</artifactId>
                            <version>${com.h3xstream.findsecbugs.libversion}</version>
                        </plugin>
                    </plugins>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>normal-build</id>
            <activation>
                <property>
                    <name>!api-compat</name>
                </property>
            </activation>
            <modules>
                <module>api</module>
                <module>spi</module>
                <module>model</module>
                <module>dao-api</module>
                <module>dao-impl</module>
                <module>dmz-api</module>
                <module>dmz-spi</module>
                <module>features</module>
                <module>mesh-rpc-api</module>
                <module>scm</module>
                <module>util</module>
                <module>test-util</module>
                <module>platform</module>
                <module>plugins</module>
                <module>service-api</module>
                <module>service-impl</module>
                <module>web-common</module>
                <module>webapp</module>
                <module>func-test</module>
            </modules>
        </profile>
        <profile>
            <id>full</id>
            <modules>
                <module>distribution</module>
            </modules>
        </profile>
        <profile>
            <id>release</id>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <version>${maven.javadoc.plugin.version}</version>
                            <executions>
                                <execution>
                                    <!-- This id must match the one defined in the atlassian-base-pom -->
                                    <id>attach-javadocs</id>
                                    <goals>
                                        <goal>jar</goal>
                                    </goals>
                                    <configuration>
                                        <failOnError>true</failOnError>

                                        <useStandardDocletOptions>false</useStandardDocletOptions>
                                        <bootclasspath>${sun.boot.class.path}</bootclasspath>
                                        <additionalOptions>
                                            -d ${project.build.directory}/apidocs
                                            ${release.javadoc.additional.params}
                                        </additionalOptions>
                                        <maxmemory>1024m</maxmemory>
                                        <detectOfflineLinks>false</detectOfflineLinks>
                                        <encoding>${source.encoding}</encoding>
                                        <additionalDependencies>
                                            <additionalDependency>
                                                <groupId>org.joda</groupId>
                                                <artifactId>joda-convert</artifactId>
                                                <version>1.2</version>
                                            </additionalDependency>
                                            <additionalDependency>
                                                <groupId>commons-logging</groupId>
                                                <artifactId>commons-logging</artifactId>
                                                <version>1.1.1</version>
                                            </additionalDependency>
                                            <additionalDependency>
                                                <groupId>jakarta.servlet</groupId>
                                                <artifactId>jakarta.servlet-api</artifactId>
                                                <version>${jakarta-servlet.version}</version>
                                            </additionalDependency>
                                            <additionalDependency>
                                                <groupId>org.osgi</groupId>
                                                <artifactId>org.osgi.annotation</artifactId>
                                                <version>6.0.0</version>
                                            </additionalDependency>
                                        </additionalDependencies>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>com.atlassian.maven.plugins</groupId>
                        <artifactId>license-maven-plugin</artifactId>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>deploy-sources</id>
                                <phase>deploy</phase>
                                <goals>
                                    <goal>open-source-distro</goal>
                                </goals>
                                <configuration>
                                    <deploySources>true</deploySources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <properties>
                <release.javadoc.additional.params />
            </properties>
        </profile>
        <profile>
            <id>release-pom-transform</id>
            <modules>
                <!-- during a release, make sure we transform the docs pom as well -->
                <module>docs</module>
                <module>etc/release</module>
            </modules>
        </profile>
        <profile>
            <id>skipIntegrationTests</id>
            <properties>
                <skipIntegrationTests>true</skipIntegrationTests>
                <skipITs>true</skipITs>
            </properties>
        </profile>
        <profile>
            <id>findbugs</id>
            <reporting>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>findbugs-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </reporting>
        </profile>
        <profile>
            <id>release-prepare-no-tests</id>
            <properties>
                <arguments>-DskipSmokeTests=true -DskipTests=true -Prelease-pom-transform,release,full,bom,source,it,skipIntegrationTests,docker</arguments>
            </properties>
        </profile>
        <profile>
            <id>release-prepare</id>
            <properties>
                <arguments>-DskipSmokeTests=true -Prelease-pom-transform,release,full,bom,source,it,skipIntegrationTests,docker -Dxvfb.enable=true</arguments>
            </properties>
        </profile>
        <profile>
            <id>release-perform-no-tests</id>
            <properties>
                <arguments>-DskipSmokeTests=true -DskipTests=true -Prelease,amps.prepare,full,bom,source,source-release,skipIntegrationTests,docker</arguments>
            </properties>
        </profile>
        <profile>
            <id>release-perform</id>
            <properties>
                <arguments>-DskipSmokeTests=true -Prelease,amps.prepare,full,bom,source,source-release,docker -Dxvfb.enable=true</arguments>
            </properties>
        </profile>
        <profile>
            <id>localDeploy</id>
            <distributionManagement>
                <repository>
                    <id>local-deploy-maven-repository</id>
                    <url>file:${local-deploy.dir}</url>
                </repository>
                <snapshotRepository>
                    <id>local-deploy-maven-repository</id>
                    <url>file:${local-deploy.dir}</url>
                </snapshotRepository>
            </distributionManagement>
        </profile>
        <!-- To activate this profile, use -Dapi-compat. Otherwise, it will include all the modules rather than just
        the ones that we want to check. Alternatively you can use -Papi-compat,\!normal-build to achieve the same thing -->
        <profile>
            <id>api-compat</id>
            <activation>
                <property>
                    <name>api-compat</name>
                </property>
            </activation>
            <modules>
                <module>api</module>
                <module>dao-api</module>
                <module>util</module>
                <module>test-util</module>
                <module>web-common</module>
                <module>spi</module>
                <module>plugins</module>
                <module>scm</module>
            </modules>
        </profile>
        <!-- On Linux, use Node and NPM packages hosted on our Maven repository -->
        <profile>
            <id>atlassian-hosted-linux</id>
            <activation>
                <os>
                    <name>linux</name>
                    <arch>amd64</arch>
                </os>
                <!-- Only activate this profile on Bamboo builds -->
                <property>
                    <name>env.bamboo_planKey</name>
                </property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>com.github.eirslett</groupId>
                            <artifactId>frontend-maven-plugin</artifactId>
                            <configuration>
                                <nodeVersion>v${fe.node.atlassian.hosted.version}</nodeVersion>
                                <npmVersion>${fe.npm.atlassian.hosted.version}</npmVersion>
                                <environmentVariables>
                                    <!-- Used by the phantomjs-prebuilt npm module, see https://www.npmjs.com/package/phantomjs-prebuilt -->
                                    <PHANTOMJS_CDNURL>
                                        https://packages.atlassian.com/maven/repository/public/com/github/klieber/phantomjs/2.1.1/
                                    </PHANTOMJS_CDNURL>
                                </environmentVariables>
                            </configuration>
                            <dependencies>
                                <dependency>
                                    <groupId>com.github.eirslett</groupId>
                                    <artifactId>node</artifactId>
                                    <version>${fe.node.atlassian.hosted.version}</version>
                                    <type>tar.gz</type>
                                    <classifier>linux-x64</classifier>
                                </dependency>
                                <dependency>
                                    <groupId>com.github.eirslett</groupId>
                                    <artifactId>npm</artifactId>
                                    <version>${fe.npm.atlassian.hosted.version}</version>
                                    <type>tar.gz</type>
                                </dependency>
                            </dependencies>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>pmd</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-pmd-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>run pmd</id>
                                <goals>
                                    <goal>pmd</goal>
                                </goals>
                                <phase>verify</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- #### Selenium in Docker configuration #### -->
        <!--

             Add the following profile in all submodules that run webdriver tests:

             <profile>
                <id>selenium.docker</id>
                <activation>
                    <property>
                        <name>selenium.docker</name>
                    </property>
                </activation>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>io.fabric8</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                        </plugin>
                    </plugins>
                </build>
            </profile>

            Do not enable profiles directly. Instead, pass the system property '-Dselenium.docker'.
            To start the selenium container in debug mode with a VNC server on port 5900, pass '-Dselenium.docker=debug'.

        -->
        <profile>
            <id>selenium.docker</id>
            <activation>
                <property>
                    <name>selenium.docker</name>
                </property>
            </activation>
            <properties>
                <webdriver.browser>${webdriver.docker.browser}:url=http://localhost:4444</webdriver.browser>
                <!-- Start Firefox in headless mode instead of using XVFB to save some memory -->
                <webdriver.browser.headless>true</webdriver.browser.headless>
                <!-- Host networking enables the Selenium container to access the host's resources on 'localhost' and
                     be available on 'locahost:4444' -->
                <selenium.docker.network.mode>host</selenium.docker.network.mode>
                <!-- Firefox requires 2G of /dev/shm size -->
                <selenium.docker.shm.size>2147483648</selenium.docker.shm.size>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>com.atlassian.maven.plugins</groupId>
                            <artifactId>bitbucket-maven-plugin</artifactId>
                            <configuration>
                                <systemPropertyVariables>
                                    <webdriver.browser>${webdriver.browser}</webdriver.browser>
                                    <webdriver.browser.headless>${webdriver.browser.headless}</webdriver.browser.headless>
                                    <!-- As of Applinks 9.1.4, localhost URLs are not allowed to be used as applinks (see VULN-940591) -->
                                    <applinks.allow.all.hosts>true</applinks.allow.all.hosts>
                                </systemPropertyVariables>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-failsafe-plugin</artifactId>
                            <configuration>
                                <systemPropertyVariables>
                                    <webdriver.browser>${webdriver.browser}</webdriver.browser>
                                    <webdriver.browser.headless>${webdriver.browser.headless}</webdriver.browser.headless>
                                </systemPropertyVariables>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>io.fabric8</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                            <configuration>
                                <imagesMap>
                                    <selenium>
                                        <name>${webdriver.docker.image}</name>
                                        <run>
                                            <env>
                                                <START_XVFB>false</START_XVFB>
                                                <JAVA_OPTS>-Xmx512m</JAVA_OPTS>
                                            </env>
                                            <network>
                                                <mode>${selenium.docker.network.mode}</mode>
                                            </network>
                                            <volumes>
                                                <bind>
                                                    <!-- Map the project directory so files are available inside the
                                                         container under the same path. This is used for capturing
                                                         screenshots and page sources when a test fails. -->
                                                    <volume>${project.basedir}:${project.basedir}</volume>
                                                </bind>
                                            </volumes>
                                            <wait>
                                                <http>
                                                    <method>GET</method>
                                                    <url>http://localhost:4444/wd/hub/status</url>
                                                </http>
                                                <time>60000</time>
                                            </wait>
                                            <shmSize>${selenium.docker.shm.size}</shmSize>
                                            <log>
                                                <prefix />
                                                <file>${project.build.directory}/seleniumDockerLogs/selenium-container.log</file>
                                            </log>
                                        </run>
                                    </selenium>
                                </imagesMap>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>start</id>
                                    <phase>pre-integration-test</phase>
                                    <goals>
                                        <goal>start</goal>
                                    </goals>
                                </execution>
                                <execution>
                                    <id>stop</id>
                                    <phase>post-integration-test</phase>
                                    <goals>
                                        <goal>stop</goal>
                                    </goals>
                                </execution>
                                <execution>
                                    <id>stop-clean</id>
                                    <phase>pre-clean</phase>
                                    <goals>
                                        <goal>stop</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>selenium.docker.withproxy</id>
            <activation>
                <os>
                    <name>!linux</name>
                </os>
                <property>
                    <name>selenium.docker</name>
                </property>
            </activation>
            <properties>
                <!-- Host networking on platforms other than Linux means the container will use the networking of the
                     VM that is running Docker and not 'localhost'. Fall back to regular port mapping and start an extra
                     'proxy' container to forward requests to localhost inside the Selenium container to the host -->
                <selenium.docker.network.mode>bridge</selenium.docker.network.mode>
                <selenium.docker.proxy.ports>7990 7991 7992 7993 7994</selenium.docker.proxy.ports>
                <!-- 'host.docker.internal' is available on Docker for Windows and Mac only. -->
                <selenium.docker.proxy.host>host.docker.internal</selenium.docker.proxy.host>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>io.fabric8</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                            <configuration>
                                <imagesMap>
                                    <selenium>
                                        <run>
                                            <ports combine.children="append">
                                                <port>4444:4444</port>
                                            </ports>
                                        </run>
                                    </selenium>
                                    <!-- This container proxies port 7990 through 7994 back to the Docker host so that
                                         the browser inside the Selenium container can access Bitbucket running outside
                                         of the container on 'localhost'. -->
                                    <proxy>
                                        <name>alpine/socat</name>
                                        <run>
                                            <entrypoint>
                                                <exec>
                                                    <arg>sh</arg>
                                                    <arg>-c</arg>
                                                    <arg>
                                                        set -- ${selenium.docker.proxy.ports}
                                                        while [ $# -gt 0 ]; do
                                                            socat -d -d TCP-LISTEN:$1,reuseaddr,fork TCP:${selenium.docker.proxy.host}:$1 &amp;
                                                            shift
                                                        done
                                                        exec socat pipe pipe
                                                    </arg>
                                                </exec>
                                            </entrypoint>
                                            <!-- This setting makes it so that it uses the networking stack of the
                                                 'selenium' container, therefore becoming accessible on 'localhost'
                                                 from inside it -->
                                            <network>
                                                <mode>container</mode>
                                                <name>selenium</name>
                                            </network>
                                            <log>
                                                <prefix />
                                                <file>${project.build.directory}/seleniumDockerLogs/proxy-container.log</file>
                                            </log>
                                        </run>
                                    </proxy>
                                </imagesMap>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>selenium.docker.debug</id>
            <activation>
                <property>
                    <name>selenium.docker</name>
                    <value>debug</value>
                </property>
            </activation>
            <properties>
                <webdriver.browser.headless>false</webdriver.browser.headless>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>io.fabric8</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                            <configuration>
                                <imagesMap>
                                    <selenium>
                                        <run>
                                            <env>
                                                <START_XVFB>true</START_XVFB>
                                                <JAVA_OPTS>-Xmx1024m</JAVA_OPTS>
                                            </env>
                                            <ports combine.children="append">
                                                <port>5900:5900</port>
                                            </ports>
                                        </run>
                                        <name>${webdriver.docker.debug.image}</name>
                                    </selenium>
                                </imagesMap>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>

        <!-- Use `npm clean-install` command when running on CI environment -->
        <profile>
            <id>npm-ci-bamboo</id>
            <activation>
                <!-- Only activate this profile on Bamboo builds -->
                <property>
                    <name>env.bamboo_planKey</name>
                </property>
            </activation>
            <properties>
                <fe.npm.install.cmd>clean-install</fe.npm.install.cmd>
            </properties>
        </profile>
        <profile>
            <id>dependency-report</id>
            <!-- Generates a dependency report in target/site/                                      -->
            <!-- We limit running to the parent pom because it still appears to capture all         -->
            <!-- dependencies and takes much less time (2m instead of 1h30m):                       -->
            <!--    mvn -Pdependency-report -pl :bitbucket-parent site                              -->
            <reporting>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>versions-maven-plugin</artifactId>
                        <configuration>
                            <rulesUri>file:etc/dependency-analysis/version-rules.xml</rulesUri>
                        </configuration>
                        <reportSets>
                            <reportSet>
                                <reports>
                                    <report>dependency-updates-aggregate-report</report>
                                    <report>plugin-updates-aggregate-report</report>
                                    <!-- The property-updates-aggregate-report adds 30-60 minutes to a run. -->
                                    <!-- We get what we need from the previous two reports.                 -->
                                    <!-- <report>property-updates-aggregate-report</report>                 -->
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                </plugins>
            </reporting>
        </profile>
    </profiles>
</project>
