<?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>eu.exeris</groupId>
        <artifactId>exeris-sdk-root</artifactId>
        <version>0.12.0</version>
    </parent>

    <artifactId>exeris-sdk-bom</artifactId>
    <packaging>pom</packaging>

    <name>Exeris SDK :: BOM</name>
    <description>Single Source of Truth for Exeris SDK module versions and third-party deps.</description>

    <properties>
        <jackson.version>3.2.2</jackson.version>
        <!-- Jackson 3.x deliberately keeps annotations on the legacy 2.x line.
             The pairing is dictated by jackson-bom: jackson-bom 3.2.2 sets
             jackson.version.annotations=2.22, so databind/datatype 3.2.2 pairs
             with annotations 2.22 (2.22 still ships JsonSerializeAs, the floor
             the AST relies on).
             Keep the two on their separate 3.x / 2.x lines — do not "unify" them.
             The floor is 3.2.1: 3.2.0 carries the @JsonView bypass on
             @JsonUnwrapped container properties. 3.2.2 is the version
             exeris-kernel-bom coordinates on, and it pairs with annotations
             2.22, checked against jackson-bom rather than assumed. -->
        <jackson.annotations.version>2.22</jackson.annotations.version>
        <junit.version>5.11.4</junit.version>
        <assertj.version>3.27.7</assertj.version>

        <!-- JavaParser powers the source-model-io parser/writer (ADR-037).
             Dual-licensed Apache-2.0 OR LGPL-3.0; the SDK ELECTS Apache-2.0
             (compatible with the SDK's Apache-2.0 + Maven Central distribution).
             It is a compile dependency of exeris-sdk-source-model-io ONLY —
             it must never appear on the dependency tree of exeris-sdk-annotations
             or exeris-sdk-source-model (zero runtime coupling, ADR-037 #1/#2). -->
        <javaparser.version>3.28.2</javaparser.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>eu.exeris</groupId>
                <artifactId>exeris-sdk-annotations</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>eu.exeris</groupId>
                <artifactId>exeris-sdk-source-model</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>eu.exeris</groupId>
                <artifactId>exeris-sdk-source-model-io</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>eu.exeris</groupId>
                <artifactId>exeris-sdk-composition-spec</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>eu.exeris</groupId>
                <artifactId>exeris-sdk-composition-lifecycle</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>eu.exeris</groupId>
                <artifactId>exeris-sdk-tck</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>eu.exeris</groupId>
                <artifactId>exeris-sdk-composition-runtime</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.annotations.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.javaparser</groupId>
                <artifactId>javaparser-core</artifactId>
                <version>${javaparser.version}</version>
            </dependency>
            <dependency>
                <groupId>tools.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>tools.jackson.datatype</groupId>
                <artifactId>jackson-datatype-jsr310</artifactId>
                <version>${jackson.version}</version>
            </dependency>

            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>${assertj.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>
