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

    Copyright (c) 1997, 2021 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.main</groupId>
        <artifactId>glassfish-nucleus-parent</artifactId>
        <version>7.0.0-SNAPSHOT</version>
    </parent>

    <groupId>org.glassfish.main.distributions</groupId>
    <artifactId>nucleus-distributions</artifactId>
    <packaging>pom</packaging>

    <name>Nucleus distributions</name>

    <developers>
        <developer>
            <id>snjezana</id>
            <name>Snjezana Sevo-Zenzerovic</name>
            <url>http://blogs.sun.com/snjezana</url>
            <organization>Oracle, Inc.</organization>
            <roles>
                <role>developer</role>
            </roles>
        </developer>
        <developer>
            <id>romain_grecourt</id>
            <name>Romain Grecourt</name>
            <organization>Oracle, Inc</organization>
            <roles>
                <role>developer</role>
            </roles>
        </developer>
    </developers>

    <modules>
        <module>nucleus-common</module>
        <module>atomic</module>
        <module>nucleus</module>
    </modules>

    <properties>
        <findbugs.skip>true</findbugs.skip>
        <stage.dir.name>stage</stage.dir.name>
        <stage.dir>${project.build.directory}/${stage.dir.name}</stage.dir>
        <temp.dir>${project.build.directory}/dependency</temp.dir>
        <include.group.ids>org.glassfish.main.packager</include.group.ids>
        <install.dir.name>${nucleus.install.dir.name}</install.dir.name>
        <create-domain.args>--user admin create-domain --nopassword --savelogin=true --checkports=false --adminport 4848
            --instanceport 8080 --keytooloptions CN=localhost domain1</create-domain.args>
    </properties>

    <build>
        <outputDirectory>${temp.dir}</outputDirectory>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.glassfish.build</groupId>
                    <artifactId>glassfishbuild-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>default-featuresets-dependencies</id>
                            <phase>process-resources</phase>
                            <configuration>
                                <featureSetGroupIdIncludes>org.glassfish.main.featuresets</featureSetGroupIdIncludes>
                                <stageDirectory>${temp.dir}</stageDirectory>
                                <excludes>META-INF/**</excludes>
                                <mappings>
                                    <mapping>
                                        <artifactId>org.apache.felix.main</artifactId>
                                        <name>felix</name>
                                    </mapping>
                                </mappings>
                            </configuration>
                        </execution>

                        <execution>
                            <id>create-domain</id>
                            <phase>process-resources</phase>
                            <configuration>
                                <executable>${stage.dir}/${nucleus.install.dir.name}/bin/nadmin</executable>
                                <commandlineArgs>${create-domain.args}</commandlineArgs>
                            </configuration>
                        </execution>

                        <execution>
                            <id>default-zip</id>
                            <phase>package</phase>
                            <configuration>
                                <excludes>**/.gitkeep_empty_dir</excludes>
                                <duplicate>preserve</duplicate>
                                <filesets>
                                    <fileset>
                                        <dir>${stage.dir}</dir>
                                        <fileMode>755</fileMode>
                                        <includes>**/bin/*</includes>
                                        <includes>**/bin/*.bat</includes>
                                        <includes>**/lib/nadmin*</includes>
                                    </fileset>
                                    <fileset>
                                        <dir>${stage.dir}</dir>
                                        <excludes>**/bin/*</excludes>
                                        <excludes>**/bin/*.bat</excludes>
                                        <excludes>**/lib/nadmin*</excludes>
                                    </fileset>
                                </filesets>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptors>
                            <descriptor>src/main/assembly/${project.artifactId}.xml</descriptor>
                        </descriptors>
                        <ignoreMissingDescriptor>false</ignoreMissingDescriptor>
                        <finalName>${stage.dir.name}</finalName>
                        <attach>false</attach>
                        <appendAssemblyId>false</appendAssemblyId>
                        <useProjectArtifact>false</useProjectArtifact>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <includeEmptyDirs>true</includeEmptyDirs>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
