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

    Copyright (c) 2011, 2018 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.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<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.glassfish</groupId>
        <artifactId>json</artifactId>
        <version>1.1.6-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <groupId>jakarta.json</groupId>
    <artifactId>jakarta.json-api</artifactId>
    <packaging>bundle</packaging>
    <version>1.1.6-SNAPSHOT</version>
    <name>JSR 374 (JSON Processing) API</name>
    <description>API module of JSR 374:Java API for Processing JSON</description>
    <url>https://javaee.github.io/jsonp</url>

    <properties>
        <packages.export>javax.json.*</packages.export>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <docfilessubdirs>true</docfilessubdirs>
                    <groups>
                        <group>
                            <title>JSON Processing Packages</title>
                            <packages>javax.json*</packages>
                        </group>
                    </groups>
                    <bottom>
<![CDATA[Copyright &#169; 2012-2018,
    <a href="http://www.oracle.com">Oracle</a>
    and/or its affiliates. All Rights Reserved.
    Use is subject to
    <a href="{@docRoot}/doc-files/speclicense.html" target="_top">license terms</a>.
    <br>Comments to : jsonp-dev@eclipse.org
]]>
                    </bottom>
                    <links>
                        <link>http://docs.oracle.com/javase/8/docs/api/</link>
                    </links>
                </configuration>

                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.glassfish.build</groupId>
                <artifactId>spec-version-maven-plugin</artifactId>
                <configuration>
                	<specMode>jakarta</specMode>
                    <spec>
                        <nonFinal>${non.final}</nonFinal>
                        <jarType>api</jarType>
                        <specVersion>${spec_version}</specVersion>
                        <specImplVersion>${new_spec_impl_version}</specImplVersion>
                        <newSpecVersion>${new_spec_version}</newSpecVersion>
                        <apiPackage>${api_package}</apiPackage>
                    </spec>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>set-spec-properties</goal>
                            <!-- TODO:
                            glassfish-spec-version-maven-plugin needs to be updated
                            in order to check 'jakarta.' prefixed values in manifest entries
                            -->
                            <!--<goal>check-module</goal>-->
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--
              This plugin is reponsible for packaging artifacts
              as OSGi bundles.  Please refer to
              http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html
              for more information about how to use this plugin.
            -->
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-Version>${spec.bundle.version}</Bundle-Version>
                        <Bundle-SymbolicName>${spec.bundle.symbolic-name}</Bundle-SymbolicName>
                        <Extension-Name>${spec.extension.name}</Extension-Name>
                        <Implementation-Version>${spec.implementation.version}</Implementation-Version>
                        <Specification-Version>${spec.specification.version}</Specification-Version>
                        <Export-Package>${packages.export}</Export-Package>
                        <Bundle-Description>Java API for JSON Processing (JSON-P) ${spec_version}</Bundle-Description>
                        <Specification-Vendor>Oracle</Specification-Vendor>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
