<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2026 IBM and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->
<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>

    <!--
        This module is published under the OLD group ID (org.eclipse) so that consumers
        who still depend on org.eclipse:yasson get an automatic migration notice via
        Maven's relocation mechanism.  Maven will emit a warning and then resolve the
        dependency to the new coordinates org.eclipse.yasson:yasson.
    -->

    <parent>
        <groupId>org.eclipse.ee4j</groupId>
        <artifactId>project</artifactId>
        <version>2.0.4</version>
        <relativePath/>
    </parent>

    <!-- Published under the OLD group ID intentionally. -->
    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>3.0.5-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Yasson (relocation)</name>
    <description>
        Relocation POM. The artifact has moved to org.eclipse.yasson:yasson.
        Add org.eclipse.yasson:yasson to your dependencies instead.
    </description>

    <distributionManagement>
        <relocation>
            <groupId>org.eclipse.yasson</groupId>
            <artifactId>yasson</artifactId>
            <!-- version intentionally omitted — same version applies -->
            <message>The groupId has changed from org.eclipse to org.eclipse.yasson. Update your dependency to org.eclipse.yasson:yasson.</message>
        </relocation>
    </distributionManagement>

    <build>
        <plugins>
            <!-- Nothing to compile or test; skip source/javadoc jars for this POM-only module. -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
