<?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.pom</groupId>
        <artifactId>closedsource-pom</artifactId>
        <version>6.3.0</version>
    </parent>

    <groupId>com.atlassian.adf</groupId>
    <artifactId>adf-builder-java-parent</artifactId>
    <version>1.7.1</version>
    <packaging>pom</packaging>

    <modules>
        <module>lib</module>
        <module>tck</module>
        <module>impl</module>
        <module>html</module>
        <module>markdown</module>
        <module>schema</module>
        <module>wiki</module>
        <module>adf-cli</module>
    </modules>

    <scm>
        <url>https://bitbucket.org/atlassian/adf-builder-java</url>
        <connection>scm:git:ssh://git@bitbucket.org/atlassian/adf-builder-java.git</connection>
        <developerConnection>scm:git:ssh://git@bitbucket.org/atlassian/adf-builder-java.git</developerConnection>
        <tag>adf-builder-java-parent-1.7.1</tag>
    </scm>

    <issueManagement>
        <system>Bitbucket</system>
        <url>https://bitbucket.org/atlassian/adf-builder-java/issues</url>
    </issueManagement>

    <ciManagement>
        <system>Bitbucket</system>
        <url>https://bitbucket.org/atlassian/adf-builder-java/pipelines</url>
    </ciManagement>

    <properties>
        <!-- Use JDK 17 -->
        <doclint>none</doclint>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>

        <!-- Use Scala 2.13 -->
        <scala.compatability.version>2.13</scala.compatability.version>
        <scala.version>2.13.10</scala.version>

        <!-- Core dependencies -->
        <annotations.version>2.2.1</annotations.version>
        <google.code.findbugs.version>3.0.2</google.code.findbugs.version>
        <slf4j.version>2.0.13</slf4j.version>

        <!-- JSON library dependencies -->
        <gson.version>2.10.1</gson.version>
        <jackson1.version>1.9.14-atlassian-6</jackson1.version>
        <jackson2.version>2.17.1</jackson2.version>
        <jackson2.databind.version>2.17.1</jackson2.databind.version>
        <playjson.version>2.9.3</playjson.version>

        <!-- HTML dependencies -->
        <jsoup.version>1.16.2</jsoup.version>

        <!-- Markdown dependencies -->
        <commonmark.version>0.20.0</commonmark.version>

        <!-- Build dependencies -->
        <checkstyle.version>3.6.0</checkstyle.version>
        <puppycrawl.version>10.22.0</puppycrawl.version>

        <!-- Test dependencies -->
        <assertj.version>3.27.3</assertj.version>
        <junit5.version>5.12.1</junit5.version>
        <mockito.version>5.5.0</mockito.version>
        <slf4j.test.version>3.0.1</slf4j.test.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Self dependencies -->
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-java</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-java-html</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-java-jackson2</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-scala-playjson_${scala.compatability.version}</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-java-markdown</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-java-schema</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-java-wiki</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.adf</groupId>
                <artifactId>adf-builder-java-tck</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Core dependencies -->
            <dependency>
                <groupId>com.atlassian.annotations</groupId>
                <artifactId>atlassian-annotations</artifactId>
                <version>${annotations.version}</version>
                <optional>true</optional>
                <exclusions>
                    <exclusion>
                        <groupId>org.checkerframework</groupId>
                        <artifactId>checker-qual</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <!-- GSON dependencies -->
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${gson.version}</version>
            </dependency>

            <!-- Jackson1 dependencies -->
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
                <version>${jackson1.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>${jackson1.version}</version>
            </dependency>

            <!-- Jackson2 dependencies -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson2.databind.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson2.version}</version>
            </dependency>

            <!-- Play JSON dependencies -->
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-scala_${scala.compatability.version}</artifactId>
                <version>${jackson2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.typesafe.play</groupId>
                <artifactId>play-json_${scala.compatability.version}</artifactId>
                <version>${playjson.version}</version>
            </dependency>

            <!-- HTML dependencies -->
            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>${jsoup.version}</version>
            </dependency>

            <!-- Markdown dependencies -->
            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark</artifactId>
                <version>${commonmark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-strikethrough</artifactId>
                <version>${commonmark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-tables</artifactId>
                <version>${commonmark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-image-attributes</artifactId>
                <version>${commonmark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-ins</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <!-- Test dependencies -->
            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>${assertj.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>${junit5.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-junit-jupiter</artifactId>
                <version>${mockito.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.valfirst</groupId>
                <artifactId>slf4j-test</artifactId>
                <version>${slf4j.test.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${checkstyle.version}</version>
                <dependencies>
                    <dependency>
                        <groupId>com.puppycrawl.tools</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>${puppycrawl.version}</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <configLocation>checkstyle.xml</configLocation>
                    <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
                    <consoleOutput>true</consoleOutput>
                    <failOnViolation>true</failOnViolation>
                    <linkXRef>false</linkXRef>
                </configuration>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <showWarnings>true</showWarnings>
                    <compilerArgs>
                        <arg>-Xlint:all</arg>
                        <arg>-Werror</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <doclint>none</doclint>
                    <additionalOptions>-Xdoclint:none</additionalOptions>
                    <additionalJOptions>
                        <additionalJOption>-Xdoclint:none</additionalJOption>
                    </additionalJOptions>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
