<!--
 Copyright 2020 Goldman Sachs

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.finos</groupId>
        <artifactId>finos</artifactId>
        <version>4</version>
    </parent>

    <name>Legend SDLC</name>
    <groupId>org.finos.legend.sdlc</groupId>
    <artifactId>legend-sdlc</artifactId>
    <version>0.71.2</version>
    <packaging>pom</packaging>

    <modules>
        <module>test-reports</module>
        <module>legend-sdlc-model</module>
        <module>legend-sdlc-entity-serialization</module>
        <module>legend-sdlc-protocol</module>
        <module>legend-sdlc-protocol-pure</module>
        <module>legend-sdlc-language-pure-compiler</module>
        <module>legend-sdlc-server-shared</module>
        <module>legend-sdlc-server</module>
        <module>legend-sdlc-generation-file</module>
        <module>legend-sdlc-generation-service</module>
        <module>legend-sdlc-generation-model</module>
        <module>legend-sdlc-extensions-collection-entity-serializer</module>
        <module>legend-sdlc-entity-maven-plugin</module>
        <module>legend-sdlc-generation-file-maven-plugin</module>
        <module>legend-sdlc-generation-model-maven-plugin</module>
        <module>legend-sdlc-generation-service-maven-plugin</module>
        <module>legend-sdlc-version-package-maven-plugin</module>
        <module>legend-sdlc-test-utils</module>
    </modules>

    <properties>
        <sonar.projectKey>legend-sdlc</sonar.projectKey>
        <sonar.moduleKey>${project.groupId}:${project.artifactId}</sonar.moduleKey>

        <!-- work around bug where maven.build.timestamp doesn't get propagated to filtering -->
        <timestamp>${maven.build.timestamp}</timestamp>

        <!-- Build Variables -->
        <encoding>UTF-8</encoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
        <maven.compiler.release>8</maven.compiler.release>

        <!-- Legend dependency versions -->
        <legend.engine.version>2.59.2</legend.engine.version>
        <legend.pure.version>1.52.2</legend.pure.version>
        <legend.shared.version>0.20.0</legend.shared.version>

        <!-- Dependency versions -->
        <commons-codec.version>1.15</commons-codec.version>
        <commons-compress.version>1.21</commons-compress.version>
        <commons-io.version>2.7</commons-io.version>
        <commons-lang.version>2.6</commons-lang.version>
        <commons-lang3.version>3.7</commons-lang3.version>
        <dropwizard.version>1.3.29</dropwizard.version>
        <dropwizard.metrics.version>4.1.16</dropwizard.metrics.version>
        <dropwizard-guicier.version>1.3.5.2</dropwizard-guicier.version>
        <dropwizard-swagger.version>1.3.17-1</dropwizard-swagger.version>
        <eclipsecollections.version>10.2.0</eclipsecollections.version>
        <findbugs.version>3.0.0</findbugs.version>
        <gitlab4j.version>4.16.0</gitlab4j.version>
        <guava.version>30.0-jre</guava.version>
        <guice.version>4.2.1</guice.version>
        <h2.version>1.4.200</h2.version>
        <hk2.version>2.5.0-b32</hk2.version>
        <jackson.version>2.10.5</jackson.version>
        <jackson.databind.version>2.10.5.1</jackson.databind.version>
        <javax.servlet.version>3.1.0</javax.servlet.version>
        <javax.ws.rs.version>2.1.1</javax.ws.rs.version>
        <jersey.version>2.25.1</jersey.version>
        <jersey2-guice.version>1.0.6</jersey2-guice.version>
        <jetty.version>9.4.44.v20210927</jetty.version>
        <json-smart.version>2.4.7</json-smart.version>
        <junit.version>4.13.1</junit.version>
        <apache.maven.version>3.6.2</apache.maven.version>
        <pac4j.version>3.8.3</pac4j.version>
        <slf4j.version>1.7.25</slf4j.version>
        <snakeyaml.version>1.27</snakeyaml.version>
        <freemarker.version>2.3.30</freemarker.version>
        <hibernate-validator.version>5.4.3.Final</hibernate-validator.version>
    </properties>

    <scm>
        <developerConnection>scm:git:https://github.com/finos/legend-sdlc</developerConnection>
        <tag>legend-sdlc-0.71.2</tag>
    </scm>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.4.13</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <release>8</release>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.10</version>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.plugins</groupId>
                    <artifactId>nexus-staging-maven-plugin</artifactId>
                    <version>1.6.8</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>3.0.0-M1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>3.0.0-M5</version>
                    <configuration>
                        <!-- This is to measure the module path issue from maven failsafe V3.0.0-M5 that introduces NoClassDefFoundError
                        during integration tests via failsafe. Flag useModulePath should be set to false in order to disable modular paths.
                        for reference: https://issues.apache.org/jira/browse/SUREFIRE-1831.-->
                        <useModulePath>false</useModulePath>
                        <trimStackTrace>false</trimStackTrace>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.1.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.3.1</version>
                    <configuration>
                        <source>8</source>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <version>3.6.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>3.0.0-M1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.2.0</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.2</version>
                    <configuration>
                        <trimStackTrace>false</trimStackTrace>
                    </configuration>
                </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>versions-maven-plugin</artifactId>
                    <version>2.7</version>
                </plugin>

                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.5</version>
                </plugin>

                <!-- TODO - send PR to https://github.com/finos/finos-parent-pom (and use a mvn property to manage the version) -->
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>3.7.0.1746</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>com.puppycrawl.tools</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>8.25</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>verify</id>
                        <phase>verify</phase>
                        <configuration>
                            <configLocation>checkstyle.xml</configLocation>
                            <logViolationsToConsole>true</logViolationsToConsole>
                            <!-- NOTE: change this to true before OSS -->
                            <failOnViolation>true</failOnViolation>
                            <violationSeverity>warning</violationSeverity>
                            <sourceDirectories>
                                <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                                <sourceDirectory>${project.build.testSourceDirectory}</sourceDirectory>
                            </sourceDirectories>
                        </configuration>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <configuration>
                    <failOnWarning>true</failOnWarning>
                    <ignoreNonCompile>true</ignoreNonCompile>
                </configuration>
                <executions>
                    <execution>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>analyze-only</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <serverId>ossrh</serverId>
                    <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce</id>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>[11.0.10,12)</version>
                                </requireJavaVersion>
                                <dependencyConvergence />
                                <bannedDependencies>
                                    <excludes>
                                        <exclude>log4j</exclude>
                                        <exclude>org.slf4j</exclude>
                                        <exclude>commons-logging</exclude>
                                        <exclude>javax.mail</exclude>
                                        <exclude>org.antlr:antlr4</exclude>
                                    </excludes>
                                    <includes>
                                        <!--only the specific included logging jars are allowed -->
                                        <include>org.slf4j:jul-to-slf4j:${slf4j.version}</include>
                                        <include>org.slf4j:slf4j-api:${slf4j.version}</include>
                                        <include>org.slf4j:jcl-over-slf4j:${slf4j.version}</include>
                                        <include>org.slf4j:slf4j-ext:${slf4j.version}</include>
                                    </includes>
                                </bannedDependencies>
                            </rules>
                        </configuration>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <pushChanges>false</pushChanges>
                    <arguments>-DskipTests</arguments>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release</releaseProfiles>
                    <completionGoals>-DreleaseTag=${tag} -N exec:exec@git-push exec:exec@git-push-tag</completionGoals>
                    <goals>deploy exec:exec@git-push</goals>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <useSystemClassLoader>true</useSystemClassLoader>
                    <useManifestOnlyJar>false</useManifestOnlyJar>
                    <reportsDirectory>${project.parent.basedir}/test-reports/surefire-reports-aggregate
                    </reportsDirectory>
                    <excludes>
                        <exclude>**/IntegrationTestGitLab*.java</exclude>
                        <exclude>**/TestGitLabServer*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <!-- Push new poms to release branch after release.
                     Ideally we'd use maven-scm-plugin for this, but it doesn't support force pushing to a branch
                -->
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>git-push</id>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <executable>git</executable>
                            <commandlineArgs>push -f origin HEAD:release</commandlineArgs>
                        </configuration>
                    </execution>
                    <execution>
                        <id>git-push-tag</id>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <executable>git</executable>
                            <commandlineArgs>push origin ${releaseTag}</commandlineArgs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>pre-unit-test</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>post-unit-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <!-- Project modules -->
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-model</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-model</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-entity-serialization</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-protocol</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-protocol</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-protocol-pure</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-protocol-pure</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-language-pure-compiler</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-extensions-collection-entity-serializer</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-server-shared</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-server</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-generation-file</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-generation-model</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-generation-service</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-entity-maven-plugin</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-generation-service-maven-plugin</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-generation-file-maven-plugin</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-generation-model-maven-plugin</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-version-package-maven-plugin</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.sdlc</groupId>
                <artifactId>legend-sdlc-server</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>

            <!-- External Legend dependencies -->
            <dependency>
                <groupId>org.finos.legend.shared</groupId>
                <artifactId>legend-shared-server</artifactId>
                <version>${legend.shared.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.shared</groupId>
                <artifactId>legend-shared-pac4j</artifactId>
                <version>${legend.shared.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.shared</groupId>
                <artifactId>legend-shared-pac4j-kerberos</artifactId>
                <version>${legend.shared.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.shared</groupId>
                <artifactId>legend-shared-pac4j-gitlab</artifactId>
                <version>${legend.shared.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-code-compiled-core</artifactId>
                <version>${legend.pure.version}</version>
                    <exclusions>
                        <exclusion>
                            <groupId>org.antlr</groupId>
                            <artifactId>*</artifactId>
                        </exclusion>
                    </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-code-java-compiled-core</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-m3-core</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-m3-dsl-graph</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-m3-dsl-path</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-m2-dsl-diagram</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-m2-store-relational</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-runtime-java-engine-compiled</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-runtime-java-extension-external-json</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-runtime-java-extension-dsl-mapping</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-m2-dsl-mapping</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.pure</groupId>
                <artifactId>legend-pure-m4</artifactId>
                <version>${legend.pure.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-protocol</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-configuration</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-protocol-pure</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-language-pure-compiler</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-language-pure-store-relational</artifactId>
                <version>${legend.engine.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.antlr</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-language-pure-grammar</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-shared-core</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-language-pure-dsl-generation</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-executionPlan-generation</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-executionPlan-execution</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-executionPlan-execution-store-relational</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-language-pure-dsl-service</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-test-runner-shared</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-test-runner-mapping</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-test-runner-service</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-executionPlan-execution-store-inMemory</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-extensions-collection-generation</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-language-pure-dsl-service-generation</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-language-pure-dsl-service-execution</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-external-shared</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-external-format-avro</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-external-format-protobuf</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-external-format-rosetta</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <dependency>
                <groupId>org.finos.legend.engine</groupId>
                <artifactId>legend-engine-external-format-jsonSchema</artifactId>
                <version>${legend.engine.version}</version>
            </dependency>
            <!-- External dependencies -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.databind.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-yaml</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.jaxrs</groupId>
                <artifactId>jackson-jaxrs-json-provider</artifactId>
                <version>${jackson.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>jakarta.activation</groupId>
                        <artifactId>jakarta.activation-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <version>${findbugs.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.inject</groupId>
                <artifactId>guice</artifactId>
                <version>${guice.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.inject.extensions</groupId>
                <artifactId>guice-servlet</artifactId>
                <version>${guice.version}</version>
            </dependency>

            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>${h2.version}</version>
            </dependency>

            <dependency>
                <groupId>com.hubspot.dropwizard</groupId>
                <artifactId>dropwizard-guicier</artifactId>
                <version>${dropwizard-guicier.version}</version>
            </dependency>

            <dependency>
                <groupId>com.nimbusds</groupId>
                <artifactId>nimbus-jose-jwt</artifactId>
                <version>8.0</version>
            </dependency>
            <dependency>
                <groupId>com.nimbusds</groupId>
                <artifactId>oauth2-oidc-sdk</artifactId>
                <version>6.5</version>
            </dependency>

            <dependency>
                <groupId>com.smoketurner</groupId>
                <artifactId>dropwizard-swagger</artifactId>
                <version>${dropwizard-swagger.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squarespace.jersey2-guice</groupId>
                <artifactId>jersey2-guice-impl</artifactId>
                <version>${jersey2-guice.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons-codec.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>${commons-lang.version}</version>
            </dependency>

            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-assets</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-configuration</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-core</artifactId>
                <version>${dropwizard.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>log4j-over-slf4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-util</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-jackson</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-jersey</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-jetty</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-lifecycle</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-logging</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-servlets</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard</groupId>
                <artifactId>dropwizard-testing</artifactId>
                <version>${dropwizard.version}</version>
            </dependency>

            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-core</artifactId>
                <version>${dropwizard.metrics.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-healthchecks</artifactId>
                <version>${dropwizard.metrics.version}</version>
            </dependency>

            <dependency>
                <groupId>io.github.classgraph</groupId>
                <artifactId>classgraph</artifactId>
                <version>4.8.25</version>
            </dependency>

            <dependency>
                <groupId>io.prometheus</groupId>
                <artifactId>simpleclient</artifactId>
                <version>0.8.1</version>
            </dependency>

            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>1.5.20</version>
            </dependency>

            <dependency>
                <groupId>jakarta.activation</groupId>
                <artifactId>jakarta.activation-api</artifactId>
                <version>1.2.2</version>
            </dependency>

            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>activation</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>javax.inject</groupId>
                <artifactId>javax.inject</artifactId>
                <version>1</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${javax.servlet.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.ws.rs</groupId>
                <artifactId>javax.ws.rs-api</artifactId>
                <version>${javax.ws.rs.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.1</version>
            </dependency>

            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.9.9</version>
            </dependency>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>

            <dependency>
                <groupId>net.minidev</groupId>
                <artifactId>json-smart</artifactId>
                <version>${json-smart.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>${commons-compress.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-text</artifactId>
                <version>1.8</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.13</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.4.13</version>
            </dependency>

            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-artifact</artifactId>
                <version>${apache.maven.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-compat</artifactId>
                <version>${apache.maven.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-core</artifactId>
                <version>${apache.maven.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-model</artifactId>
                <version>${apache.maven.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-plugin-api</artifactId>
                <version>${apache.maven.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.maven.plugin-testing</groupId>
                <artifactId>maven-plugin-testing-harness</artifactId>
                <version>3.3.0</version>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.maven.plugin-tools</groupId>
                <artifactId>maven-plugin-annotations</artifactId>
                <version>3.6.0</version>
            </dependency>

            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-classworlds</artifactId>
                <version>2.6.0</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-component-annotations</artifactId>
                <version>2.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-utils</artifactId>
                <version>3.2.1</version>
            </dependency>

            <dependency>
                <groupId>org.eclipse.collections</groupId>
                <artifactId>eclipse-collections-api</artifactId>
                <version>${eclipsecollections.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.collections</groupId>
                <artifactId>eclipse-collections</artifactId>
                <version>${eclipsecollections.version}</version>
            </dependency>

            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-continuation</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-http</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-security</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-servlet</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-servlets</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-util-ajax</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-xml</artifactId>
                <version>${jetty.version}</version>
            </dependency>

            <dependency>
                <groupId>org.gitlab4j</groupId>
                <artifactId>gitlab4j-api</artifactId>
                <version>${gitlab4j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.glassfish.hk2</groupId>
                <artifactId>hk2-api</artifactId>
                <version>${hk2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.hk2</groupId>
                <artifactId>hk2-locator</artifactId>
                <version>${hk2.version}</version>
            </dependency>

            <dependency>
                <groupId>org.glassfish.jersey.containers</groupId>
                <artifactId>jersey-container-servlet-core</artifactId>
                <version>${jersey.version}</version>
            </dependency>

            <dependency>
                <groupId>org.glassfish.jersey.core</groupId>
                <artifactId>jersey-client</artifactId>
                <version>${jersey.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.core</groupId>
                <artifactId>jersey-common</artifactId>
                <version>${jersey.version}</version>
            </dependency>

            <dependency>
                <groupId>org.glassfish.jersey.media</groupId>
                <artifactId>jersey-media-multipart</artifactId>
                <version>${jersey.version}</version>
            </dependency>

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

            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.21.0-GA</version>
            </dependency>

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

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

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${snakeyaml.version}</version>
            </dependency>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <repositories>
        <repository>
            <id>ossrh</id>
            <name>OSSRH Public Group</name>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>ossrh-releases</id>
            <name>OSSRH Public Releases Group</name>
            <url>https://s01.oss.sonatype.org/content/repositories/releases/</url>
        </repository>
    </repositories>

    <profiles>
        <profile>
            <id>docker</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.spotify</groupId>
                        <artifactId>dockerfile-maven-plugin</artifactId>
                        <inherited>false</inherited>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>test-gitlab-docker</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <exclude>none</exclude>
                            </excludes>
                            <includes>
                                <include>**/IntegrationTestGitLab*.java</include>
                            </includes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>test-gitlab-com</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <exclude>none</exclude>
                            </excludes>
                            <includes>
                                <include>**/TestGitLabServer*.java</include>
                            </includes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
