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

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

    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/maven-v4_0_0.xsd">
    <parent>
        <groupId>org.glassfish.main</groupId>
        <artifactId>glassfish-parent</artifactId>
        <version>6.0.0-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <groupId>org.glassfish.main.admingui</groupId>
    <artifactId>jsftemplating</artifactId>
    <name>Admin Console JSFTemplating Repackaging</name>
    <version>${jsftemplating.version}</version>
    <modelVersion>4.0.0</modelVersion>
    <description>JSFTemplating Repackaged as OSGi bundle for GlassFish</description>

    <developers>
        <!-- See parent POM -->
    </developers>

    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>work-around</id>
                        <phase>process-resources</phase>
                        <configuration>
                            <tasks>
                                <!-- For whetever reason (I have to investigate further),
                                     running mvn install subsequently adds a version attr
                                     to all import headers. Since packages don't have matching
                                     version, it fails. So, to simulate clean build, we clean
                                     the outputDir. Sahoo.
                                -->
                                <delete dir="${project.build.outputDirectory}" quiet="true"/>
                                <!-- Because, we inherit the plugin from parent and the parent
                                     configures manifest task, it fails when classes dir does not
                                     exist. So, we create one -->
                                <mkdir dir="${project.build.outputDirectory}"/>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <!-- Configure maven-bundle-plugin which takes care of
                     OSGi packaging -->
                <!-- We need to override the plugin settings -->
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <!-- We don't use extensions as this interfers with
                     HK2 and that results in hk2 artifacts
                     being copied as .hk2-jar. Instead, we configure the
                     plugin to run as part of package phase. By Sahoo.
                <extensions>true</extensions>
                -->
                <configuration>
                    <!-- Enable it for jar type -s parent plugin disable it for
                         jar type.
                    -->
                    <supportedProjectTypes>
                        <supportedProjectType>jar</supportedProjectType>
                    </supportedProjectTypes>
                    <instructions>
                        <Embed-Dependency>artifactId=jsftemplating;inline=true;</Embed-Dependency>
                        <Export-Package>*; password="GlassFish"; mandatory:=password</Export-Package>
                        <Import-Package>com.sun.sql.*;resolution:=optional,*</Import-Package>
                    </instructions>
                    <unpackBundle>true</unpackBundle>
                </configuration>
                <executions>
                    <execution>
                        <id>osgi-bundle</id>
                        <phase>package</phase>
                        <goals>
                            <goal>bundle</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.sun.jsftemplating</groupId>
            <artifactId>jsftemplating</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
</project>

