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

    Copyright (c) 2016, 2020 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.6</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>2.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>org.eclipse.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>
        <jakarta.json.version>2.0.0-RC1</jakarta.json.version>
        <jakarta.json.bind.version>2.0.0-RC1</jakarta.json.bind.version>
        <netbeans.hint.jdkPlatform>JDK_9</netbeans.hint.jdkPlatform>
    </properties>

    <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.glassfish</groupId>
            <artifactId>jakarta.json</artifactId>
            <version>${jakarta.json.version}</version>
            <classifier>module</classifier>
            <scope>compile</scope>
        </dependency>
        <!-- Test/Provided dependencies -->
        <dependency>
            <groupId>jakarta.enterprise</groupId>
            <artifactId>jakarta.enterprise.cdi-api</artifactId>
            <version>2.0.2</version>
            <optional>true</optional>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.weld.se</groupId>
            <artifactId>weld-se</artifactId>
            <version>2.4.3.Final</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.2</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>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>
    </profiles>

    <build>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
        <finalName>${project.artifactId}</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>3.0.4</version>
                    <configuration>
                        <effort>Max</effort>
                        <threshold>Low</threshold>
                        <xmlOutput>true</xmlOutput>
                    </configuration>
                    <executions>
                        <execution>
                            <id>analyze-compile</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <executions>
                        <execution>
                            <id>default-compile</id>
                            <configuration>
                                <!-- compile everything to ensure module-info contains right entries -->
                                <!-- required when JAVA_HOME is JDK 8 or below -->
                                <release>9</release>
                                <compilerArgs>
                                    <!--Remove when CDI is updated to support modules-->
                                    <arg>--add-reads</arg>
                                    <arg>org.eclipse.yasson=ALL-UNNAMED</arg>
                                </compilerArgs>
                            </configuration>
                        </execution>
                        <execution>
                            <id>base-compile</id>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                            <!-- recompile everything for 1.8 except the module-info.java -->
                            <configuration>
                                <release>8</release>
                                <excludes>
                                    <exclude>module-info.java</exclude>
                                </excludes>
                            </configuration>
                        </execution>
                        <execution>
                            <id>default-testCompile</id>
                            <configuration>
                                <release>11</release>
                            </configuration>
                        </execution>
                    </executions>
                    <!-- defaults for compile and testCompile -->
                    <configuration>
                        <compilerArgs>
                            <arg>-Xlint:all</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <archive>
                            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                        </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>1.4</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>3.0.1</version>
                    <configuration>
                        <doctitle>Yasson</doctitle>
                        <sourcepath>${basedir}/src/main/java/org/eclipse/yasson</sourcepath>
                        <additionalJOptions>
                            <additionalJOption>--add-modules</additionalJOption>
                            <additionalJOption>jakarta.json.bind,jakarta.json</additionalJOption>
                        </additionalJOptions>
                        <source>11</source>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.0.1</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>3.5.0</version>
                    <executions>
                        <execution>
                            <id>osgi-bundle</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>manifest</goal>
                            </goals>
                            <configuration>
                                <instructions>
                                    <_failok>true</_failok>
                                    <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>
                                    <Import-Package>
                                        javax.enterprise.context.spi;version=!;resolution:="optional",
                                        javax.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=1.8))"</Require-Capability>
                                </instructions>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.0.0-M3</version>
                    <executions>
                        <execution>
                            <id>default-test</id>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <trimStackTrace>false</trimStackTrace>
                                <excludes>
                                    <exclude>**/JavaxNamingExcludedTest.class</exclude>
                                    <exclude>**/AnnotationIntrospectorWithoutOptionalModulesTest.class</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
                                </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>3.0.0-M2</version>
                    <executions>
                        <execution>
                            <id>enforce-versions</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <rules>
                            <requireJavaVersion>
                                <version>[9,)</version>
                            </requireJavaVersion>
                            <requireMavenVersion>
                                <version>[3.3.9,)</version>
                            </requireMavenVersion>
                            <DependencyConvergence/>
                        </rules>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.0.0</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>3.1.0</version>
                    <configuration>
                        <configLocation>etc/checkstyle.xml</configLocation>
                        <suppressionsLocation>etc/checkstyle-suppressions.xml</suppressionsLocation>
                        <encoding>UTF-8</encoding>
                        <consoleOutput>true</consoleOutput>
                        <failsOnError>true</failsOnError>
                        <linkXRef>false</linkXRef>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>8.18</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>com.sun</groupId>
                                    <artifactId>tools</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.glassfish.copyright</groupId>
                    <artifactId>glassfish-copyright-maven-plugin</artifactId>
                    <version>2.3</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>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>3.0.4</version>
            </plugin>
        </plugins>
    </reporting>
</project>
