<?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">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.glassfish.main.extras</groupId>
        <artifactId>extras</artifactId>
        <version>6.0.0-SNAPSHOT</version>
        <relativePath>../../../pom.xml</relativePath>
    </parent>
    <artifactId>glassfish-embedded-shell</artifactId>
    <name>Embedded GlassFish Shell</name>


    <properties>
        <classpath.file>${project.build.directory}/tmp/classpath.txt</classpath.file>
    </properties>

    <build>
        <plugins>
            <!--
                Create a text file containing the generated class path.  This
                file is used in the ant tasks when the original Class-Path is
                augmented.  Note: we force the path separator to be a colon
                because the plug-in will use the platform-specific separator
                otherwise.  The ant logic replaces colons with spaces to
                reformat the contents of the file so it's useful in the manifest.
            -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-dependency-plugin</artifactId>
              <executions>
                  <execution>
                      <id>generate-classpath-file</id>
                      <phase>process-sources</phase>
                      <goals>
                          <goal>build-classpath</goal>
                      </goals>
                      <configuration>
                          <outputFile>${classpath.file}</outputFile>
                          <outputFilterFile>true</outputFilterFile>
                          <pathSeparator>:</pathSeparator>
                          <fileSeparator>/</fileSeparator>
                          <prefix>../../modules</prefix>
                          <stripVersion>true</stripVersion>
                      </configuration>
                  </execution>
              </executions>
          </plugin>

          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <configuration>
                  <archive>
                      <manifest>
                          <addClasspath>true</addClasspath>
                          <classpathLayoutType>custom</classpathLayoutType>
                          <customClasspathLayout>../../modules/$${artifact.artifactId}$${dashClassifier?}.$${artifact.extension}</customClasspathLayout>
                      </manifest>
                  </archive>
              </configuration>
          </plugin>

          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-antrun-plugin</artifactId>
              <executions>
                  <execution>
                      <id>fixup-jar-classpath</id>
                      <phase>package</phase>
                      <goals>
                          <goal>run</goal>
                      </goals>
                      <configuration>
                          <target>
                              <ant antfile="../fixup.xml">
                                  <property name="output.file" value="${project.build.finalName}.jar" />
                                  <property name="output.dir" value="${project.build.directory}" />
                                  <property name="stage.dir" value="${project.build.directory}/stage" />
                                  <property name="classpath.file" value="${classpath.file}" />
                                  <property name="bundlename" value="org.glassfish.embedded.shell" />
                                  <property name="install.dir.name" value="${install.dir.name}" />
                              </ant>
                          </target>
                      </configuration>
                  </execution>
              </executions>
          </plugin>
        </plugins>
    </build>

    <dependencies>
        <!--
            The maven-jar-plugin will do the work of finding the transitive
            closure of it and the modules on which it depends to build the
            accurate Class-Path for the manifest.
        -->
        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>glassfish-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.core</groupId>
            <artifactId>glassfish</artifactId>
            <version>${project.version}</version>
        </dependency>

   </dependencies>
</project>
