<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<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">
    <parent>
        <artifactId>fulcrum-security</artifactId>
        <groupId>org.apache.fulcrum</groupId>
        <version>3.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>fulcrum-security-dist</artifactId>
    <packaging>pom</packaging>
    <name>Fulcrum Security Distribution Build</name>
    
    
    <!-- NOTE: These dependency declarations are only required to sort this project to the 
         end of the line in the multimodule build. 
    -->
    <dependencies>
      <dependency>
        <groupId>org.apache.fulcrum</groupId>
        <artifactId>fulcrum-security-api</artifactId>
      </dependency>
    </dependencies>

    <build>
        <plugins>
		   <plugin>
               <!-- disable site generation for this helper module -->
			   <groupId>org.apache.maven.plugins</groupId>
			   <artifactId>maven-site-plugin</artifactId>
			   <configuration>
			       <skip>true</skip>
			       <skipDeploy>true</skipDeploy>
			   </configuration>
		   </plugin>
        </plugins>
    </build>
    
    <profiles>
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <!-- build the source and binary distribution packages -->
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>fulcrum-release-assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <runOnlyAtExecutionRoot>false</runOnlyAtExecutionRoot>
                                    <descriptors>
                                      <descriptor>src/assembly/bin.xml</descriptor>
                                      <descriptor>src/assembly/src.xml</descriptor>
                                    </descriptors>
                                    <tarLongFileFormat>gnu</tarLongFileFormat>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
