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

    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
    Copyright (c) 2019 Payara Services Ltd.

    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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.glassfish.hk2</groupId>
        <artifactId>maven-plugins</artifactId>
        <version>3.0.7-SNAPSHOT</version>
    </parent>

    <artifactId>osgiversion-maven-plugin</artifactId>
    <packaging>maven-plugin</packaging>

    <name>OSGiVersion Maven Plugin</name>
    <description>Maven Plugin for computing OSGi versions from Maven versions</description>

    <!--
         This plugin is used during build of all OSGi artifacts in HK2 like core,
         config, auto-depends, etc. If we make this part of hk2-maven-plugin,
         it will cause a circular dependency like this:
         hk2-maven-plugin -> hk2-maven -> core -> hk2-maven-plugin.
         So, this is separated from hk2-maven-plugin.
         This plugin is used to set a predefined property called
         project.osgi.version which can then be used in pom.xmls.
    -->
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-osgi</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestFile>${manifest.location}</manifestFile>
                        <manifestEntries>
                            <Automatic-Module-Name>org.glassfish.hk2.maven.osgiversion</Automatic-Module-Name>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
