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

    Copyright (c) 2016, 2024 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">

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

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>3.0.4</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.testRelease>${maven.compiler.release}</maven.compiler.testRelease>

        <!--Dependencies-->
        <hamcrest.version>2.2</hamcrest.version>
        <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.parson.version>1.1.7</jakarta.parson.version>
        <junit-jupiter.version>5.10.2</junit-jupiter.version>
        <weld-se-core.version>6.0.0.Beta1</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>
                        <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>11</release>
                                <source>11</source>
                                <target>11</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, 2024 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>
