<?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</groupId>
        <artifactId>glassfish-parent</artifactId>
        <version>6.0.0-SNAPSHOT</version>
    </parent>
    <packaging>pom</packaging>
    <groupId>org.glassfish.main.distributions</groupId>
    <artifactId>distributions</artifactId>
    <name>Glassfish 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>

    <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,org.glassfish.main.registration</include.group.ids>
        <template.jar>${stage.dir}/${install.dir.name}/glassfish/common/templates/gf/appserver-domain.jar</template.jar>
        <create-domain.args>--user admin create-domain --template=${template.jar} --nopassword --savelogin=true --checkports=false --adminport 4848 --instanceport 8080 --keytooloptions CN=localhost domain1</create-domain.args>
    </properties>

    <modules>
        <module>web</module>
        <module>glassfish</module>
        <module>glassfish-common</module>
    </modules>

    <build>
        <outputDirectory>${temp.dir}</outputDirectory>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <includeEmptyDirs>true</includeEmptyDirs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.glassfish.build</groupId>
                    <artifactId>glassfishbuild-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>create-domain</id>
                            <phase>process-resources</phase>
                            <configuration>
                                <executable>${stage.dir}/${install.dir.name}/bin/asadmin</executable>
                                <commandlineArgs>${create-domain.args}</commandlineArgs>
                            </configuration>
                        </execution>
                        <execution>
                            <id>default-featuresets-dependencies</id>
                            <phase>process-resources</phase>
                            <configuration>
                                <featureSetGroupIdIncludes>org.glassfish.main.featuresets</featureSetGroupIdIncludes>
                                <stageDirectory>${temp.dir}</stageDirectory>
                                <excludes>META-INF/maven/**</excludes>
                                <copyTypes>jar,war</copyTypes>
                                <unpackTypes>zip,rar,war</unpackTypes>
                                <silent>true</silent>
                                <copyExcludes>war</copyExcludes>
                                <mappings>
                                    <mapping>
                                        <artifactId>org.apache.felix.main</artifactId>
                                        <name>felix</name>
                                    </mapping>
                                </mappings>
                            </configuration>
                        </execution>
                        <execution>
                            <id>default-zip</id>
                            <phase>package</phase>
                            <configuration>
                                <excludes>**/.gitkeep_empty_dir</excludes>
                                <duplicate>preserve</duplicate>
                                <filesets>
                                     <fileset>
                                        <fileMode>600</fileMode>
                                        <dir>${stage.dir}</dir>
                                        <includes>**/*.jks</includes>
                                        <includes>**/admin-keyfile</includes>
                                        <includes>**/domain-passwords</includes>
                                        <includes>**/keyfile</includes>
                                    </fileset>
                                    <fileset>
                                        <fileMode>640</fileMode>
                                        <dir>${stage.dir}</dir>
                                        <includes>**/bin/*.1m</includes>
                                        <includes>**/bin/*.jar</includes>
                                    </fileset>
                                    <fileset>
                                        <dir>${stage.dir}</dir>
                                        <fileMode>750</fileMode>
                                        <includes>**/bin/*</includes>
                                        <includes>**/bin/*.bat</includes>
                                        <includes>**/config/*.bat</includes>
                                        <includes>**/config/*.conf</includes>
                                        <includes>**/lib/nadmin*</includes>
                                        <includes>**/imq</includes>
                                        <includes>**/imqinit</includes>
                                        <excludes>**/bin/*.1m</excludes>
                                        <excludes>**/bin/*.jar</excludes>
                                    </fileset>
                                    <fileset>
                                        <fileMode>640</fileMode>
                                        <dir>${stage.dir}</dir>
                                        <excludes>**/bin/*</excludes>
                                        <excludes>**/bin/*.bat</excludes>
                                        <excludes>**/lib/nadmin*</excludes>
                                    </fileset>
                                </filesets>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>default-single</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <descriptors>
                            <descriptor>${basedir}/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>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>clean-domain</id>
                            <goals>
                                <goal>clean</goal>
                            </goals>
                            <configuration>
                                <directory>${project.build.directory}</directory>
                                <includes>
                                    <include>${stage.dir.name}/**/domains/**</include>
                                </includes>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
