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

    Copyright (c) 2016, 2026 Oracle 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>

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

    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>3.0.5-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>Yasson</name>

    <description>Eclipse Yasson. Reference implementation of JSR-367 (JSON-B).</description>
    <url>https://projects.eclipse.org/projects/ee4j.yasson</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <maven.compiler.release>11</maven.compiler.release>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.testRelease>${maven.compiler.release}</maven.compiler.testRelease>
        
        <nexus.staging.repository>yasson-maven2-staging</nexus.staging.repository>

        <!--Dependencies-->
        <hamcrest.version>2.2</hamcrest.version>
        
        <!-- Jakarta API -->
        <jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
        <jakarta.el-api.version>6.0.0</jakarta.el-api.version>
        <jakarta.enterprise.cdi-api.version>4.1.0</jakarta.enterprise.cdi-api.version>
        <jakarta.interceptor-api.version>2.2.0</jakarta.interceptor-api.version>
        <jakarta.json.bind.version>3.0.1</jakarta.json.bind.version>
        <jakarta.json.version>2.1.3</jakarta.json.version>

        <!-- Jakarta Implementation -->
        <jakarta.parson.version>1.1.9</jakarta.parson.version>

        <!-- Test dependencies-->
        <junit-jupiter.version>5.14.4</junit-jupiter.version> <!-- TODO update to Junit 6 when running on Java 17+ -->
        <weld-se-core.version>6.0.4.Final</weld-se-core.version>

        <!--Plugins-->
        <build-helper-maven-plugin.version>3.6.0</build-helper-maven-plugin.version>
        <buildnumber-maven-plugin.version>3.2.0</buildnumber-maven-plugin.version>
        <spotbugs-maven-plugin.version>4.8.5.0</spotbugs-maven-plugin.version>
        <glassfish-copyright-maven-plugin.version>2.4</glassfish-copyright-maven-plugin.version>
        <maven-bundle-plugin.version>5.1.9</maven-bundle-plugin.version>
        <maven-checkstyle-plugin.version>3.3.1</maven-checkstyle-plugin.version>
        <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
        <maven-enforcer-plugin.version>3.4.1</maven-enforcer-plugin.version>
        <maven-jar-plugin.version>3.4.1</maven-jar-plugin.version>
        <maven-javadoc-plugin.version>3.6.3</maven-javadoc-plugin.version>
        <maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>jakarta.enterprise</groupId>
                <artifactId>jakarta.enterprise.cdi-api</artifactId>
                <version>${jakarta.enterprise.cdi-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.el</groupId>
                <artifactId>jakarta.el-api</artifactId>
                <version>${jakarta.el-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.interceptor</groupId>
                <artifactId>jakarta.interceptor-api</artifactId>
                <version>${jakarta.interceptor-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.annotation</groupId>
                <artifactId>jakarta.annotation-api</artifactId>
                <version>${jakarta.annotation-api.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Compile dependencies -->
        <dependency>
            <groupId>jakarta.json.bind</groupId>
            <artifactId>jakarta.json.bind-api</artifactId>
            <version>${jakarta.json.bind.version}</version>
        </dependency>
        <dependency>
            <groupId>jakarta.json</groupId>
            <artifactId>jakarta.json-api</artifactId>
            <version>${jakarta.json.version}</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.parsson</groupId>
            <artifactId>parsson</artifactId>
            <version>${jakarta.parson.version}</version>
        </dependency>
        <!-- Test/Provided dependencies -->
        <dependency>
            <groupId>jakarta.enterprise</groupId>
            <artifactId>jakarta.enterprise.cdi-api</artifactId>
            <optional>true</optional>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.weld.se</groupId>
            <artifactId>weld-se-core</artifactId>
            <version>${weld-se-core.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit-jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit-jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
            <version>${hamcrest.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <organization>
        <name>Oracle Corporation</name>
        <url>http://www.oracle.com/</url>
    </organization>

    <issueManagement>
        <system>github</system>
        <url>https://github.com/eclipse-ee4j/yasson/issues</url>
    </issueManagement>

    <mailingLists>
        <mailingList>
            <name>Yasson mailing list</name>
            <post>yasson-dev@eclipse.org</post>
            <subscribe>https://dev.eclipse.org/mailman/listinfo/yasson-dev</subscribe>
            <unsubscribe>https://dev.eclipse.org/mailman/listinfo/yasson-dev</unsubscribe>
            <archive>https://dev.eclipse.org/mhonarc/lists/yasson-dev/</archive>
        </mailingList>
    </mailingLists>

    <licenses>
        <license>
            <name>Eclipse Public License v. 2.0</name>
            <url>http://www.eclipse.org/legal/epl-v20.html</url>
            <distribution>repo</distribution>
            <comments>Standard Eclipse License</comments>
        </license>
        <license>
            <name>Eclipse Distribution License v. 1.0</name>
            <url>http://www.eclipse.org/org/documents/edl-v10.php</url>
            <distribution>repo</distribution>
            <comments>Standard Eclipse Distribution License</comments>
        </license>
    </licenses>

    <scm>
        <connection>scm:git:ssh://git@github.com/eclipse-ee4j/yasson.git</connection>
        <developerConnection>scm:git:ssh://git@github.com/eclipse-ee4j/yasson.git</developerConnection>
        <url>https://github.com/eclipse-ee4j/yasson.git</url>
        <tag>HEAD</tag>
    </scm>

    <developers>
        <developer>
            <email>dmitry.kornilov@oracle.com</email>
            <id>maiden168</id>
            <name>Dmitry Kornilov</name>
            <organization>Oracle</organization>
            <roles>
                <role>JSON Binding 1.0 Spec Lead</role>
            </roles>
            <timezone>CET</timezone>
        </developer>
        <developer>
            <email>roman.grigoriadi@oracle.com</email>
            <id>roman.grigoriadi</id>
            <name>Roman Grigoriadi</name>
            <organization>Oracle</organization>
            <roles>
                <role>JSON Binding 1.0 Developer</role>
            </roles>
            <timezone>CET</timezone>
        </developer>
        <developer>
            <email>david.k.kral@oracle.com</email>
            <id>david.kral</id>
            <name>David Kral</name>
            <organization>Oracle</organization>
            <roles>
                <role>JSON Binding 1.0 Developer</role>
            </roles>
            <timezone>CET</timezone>
        </developer>
        <developer>
            <email>andy.guibert@gmail.com</email>
            <id>aguibert</id>
            <name>Andy Guibert</name>
            <organization>IBM</organization>
            <roles>
                <role>JSON Binding 1.0 Developer</role>
            </roles>
            <timezone>CST</timezone>
        </developer>
    </developers>

    <profiles>
        <profile>
            <id>checkstyle</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>run-checkstyle</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>validate</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>spotbugs</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.github.spotbugs</groupId>
                        <artifactId>spotbugs-maven-plugin</artifactId>
                        <version>${spotbugs-maven-plugin.version}</version>
                        <configuration>
                            <threshold>Low</threshold>
                        </configuration>
                        <executions>
                            <execution>
                                <id>analyze-compile</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>copyright</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.glassfish.copyright</groupId>
                        <artifactId>glassfish-copyright-maven-plugin</artifactId>
                        <configuration>
                            <!-- Ignore the year to comply with Eclipse Foundation. -->
                            <ignoreYear>true</ignoreYear>
                        </configuration>
                        <executions>
                            <!--Copyright goal does not fail when copyright is not properly updated,
                                but prints out which file has incorrect copyright.-->
                            <execution>
                                <id>print-copyright</id>
                                <goals>
                                    <goal>copyright</goal>
                                </goals>
                                <phase>validate</phase>
                            </execution>
                            <!--Check goal does not print out incorrect copyright files, but fails when there are errors.-->
                            <execution>
                                <id>check-copyright</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>validate</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>jdk16</id>
            <activation>
                <jdk>[16,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-testCompile</id>
                                <configuration>
                                    <release>16</release>
                                    <testRelease>16</testRelease>
                                    <compileSourceRoots>
                                        <compileSourceRoot>${project.basedir}/src/test/java</compileSourceRoot>
                                        <compileSourceRoot>${project.basedir}/src/test/java16</compileSourceRoot>
                                    </compileSourceRoots>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <includes>
                                <include>**/RecordTest.java</include>
                            </includes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <finalName>${project.artifactId}</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <!-- defaults for compile and testCompile -->
                    <executions>
                        <execution>
                            <id>default-compile</id>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                            <configuration>
                                <release>${maven.compiler.release}</release>
                                <source>${maven.compiler.release}</source>
                                <target>${maven.compiler.release}</target>
                            </configuration>
                        </execution>
                        <execution>
                            <id>default-testCompile</id>
                            <configuration>
                                <release>11</release>
                            </configuration>
                        </execution>
                        <execution>
                            <id>multi-release-compile-16</id>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                            <configuration>
                                <release>16</release>
                                <compileSourceRoots>
                                    <compileSourceRoot>${project.basedir}/src/main/java16</compileSourceRoot>
                                </compileSourceRoots>
                                <multiReleaseOutput>true</multiReleaseOutput>
                            </configuration>
                        </execution>
                    </executions>
                    <configuration>
                        <compilerArgs>
                            <arg>-Xlint:all</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${maven-jar-plugin.version}</version>
                    <configuration>
                        <archive>
                            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                            <manifestEntries>
                                <Multi-Release>true</Multi-Release>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <!-- This plugin generates the buildNumber property used in maven-bundle-plugin -->
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>${buildnumber-maven-plugin.version}</version>
                    <configuration>
                        <format>{0,date,MM/dd/yyyy hh:mm aa}</format>
                        <items>
                            <item>timestamp</item>
                        </items>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>create</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven-javadoc-plugin.version}</version>
                    <configuration>
                        <bottom><![CDATA[Copyright &#169; 2017, 2026 Oracle Corporation. All rights reserved.<br>]]></bottom>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>${maven-bundle-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>osgi-bundle</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>manifest</goal>
                            </goals>
                            <configuration>
                                <niceManifest>true</niceManifest>
                                <instructions>
                                    <Bundle-Name>${project.name}</Bundle-Name>
                                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                                    <Bundle-Version>${project.version}</Bundle-Version>
                                    <Export-Package>org.eclipse.yasson;version=${project.version}</Export-Package>
                                    <Private-Package>org.eclipse.yasson.*;version=${project.version}</Private-Package>
                                    <Multi-Release>true</Multi-Release>
                                    <Import-Package>
                                        jakarta.enterprise.context.spi;version=!;resolution:="optional",
                                        jakarta.enterprise.inject.spi;version=!;resolution:="optional",
                                        javax.naming;resolution:="optional",
                                        java.beans;resolution:="optional",
                                        *
                                    </Import-Package>
                                    <Require-Capability>osgi.ee;filter:="(&amp;(osgi.ee=JavaSE)(version=11))"</Require-Capability>
                                </instructions>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>default-test</id>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
<!--                                <testFailureIgnore>true</testFailureIgnore>-->
                                <trimStackTrace>false</trimStackTrace>
                                <excludes>
                                    <exclude>**/JavaxNamingExcludedTest.java</exclude>
                                    <exclude>**/AnnotationIntrospectorWithoutOptionalModulesTest.java</exclude>
                                    <exclude>**/*Record*</exclude>
                                </excludes>
                                <argLine>
                                    <!--Remove when CDI is updated to support modules
                                    (Yasson does read CDI which is on CP, CDI access yasson's classes with reflection)
                                    -->
                                    --add-reads org.eclipse.yasson=ALL-UNNAMED --add-opens org.eclipse.yasson/org.eclipse.yasson.internal.cdi=ALL-UNNAMED

                                    --add-exports org.eclipse.yasson/org.eclipse.yasson.internal.cdi=java.naming
                                </argLine>
                            </configuration>
                        </execution>
                        <execution>
                            <id>optional-modules-excluded</id>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <argLine>
                                    <!--java.management is required by Maven's ForkedBooter-->
                                    --limit-modules java.base,java.logging,java.sql,jakarta.json.bind,jakarta.json,java.management,jdk.localedata,org.eclipse.parsson,org.eclipse.yasson
                                </argLine>
                                <includes>
                                    <include>**/JavaxNamingExcludedTest.class</include>
                                    <include>**/AnnotationIntrospectorWithoutOptionalModulesTest.class</include>
                                </includes>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${maven-enforcer-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>enforce-versions</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <rules>
                            <requireJavaVersion>
                                <version>[11,)</version>
                            </requireJavaVersion>
                            <requireMavenVersion>
                                <version>[3.6.0,)</version>
                            </requireMavenVersion>
                            <DependencyConvergence/>
                        </rules>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${build-helper-maven-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>add-resource</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>add-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>${basedir}</directory>
                                        <targetPath>META-INF</targetPath>
                                        <includes>
                                            <include>LICENSE.md</include>
                                            <include>NOTICE.md</include>
                                        </includes>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${maven-checkstyle-plugin.version}</version>
                    <configuration>
                        <configLocation>etc/checkstyle.xml</configLocation>
                        <suppressionsLocation>etc/checkstyle-suppressions.xml</suppressionsLocation>
                        <consoleOutput>true</consoleOutput>
                        <failsOnError>true</failsOnError>
                        <linkXRef>false</linkXRef>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.glassfish.copyright</groupId>
                    <artifactId>glassfish-copyright-maven-plugin</artifactId>
                    <version>${glassfish-copyright-maven-plugin.version}</version>
                    <configuration>
                        <templateFile>etc/copyright.txt</templateFile>
                        <excludeFile>etc/copyright-exclude.txt</excludeFile>
                        <scm>git</scm>
                        <debug>false</debug>
                        <scmOnly>true</scmOnly>
                        <warn>true</warn>
                        <ignoreYear>false</ignoreYear>
                        <preserveCopyrights>true</preserveCopyrights>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
