<?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">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>

  <groupId>org.apache.avro</groupId>
  <artifactId>avro-toplevel</artifactId>
  <version>1.5.4</version>
  <packaging>pom</packaging>

  <name>Apache Avro Toplevel</name>
  <url>http://avro.apache.org</url>
  <description>Avro toplevel pom</description>

  <!-- This project is used for top level build tasks and artifact copying.  
       The RAT task is run to validate licenses.  The Enforcer plugin is used
       to validate that java projects are the correct version.
       Java artifacts are copied to the final build destination with a custom profile.
       -->
  <properties>
    <avro.distDir>dist</avro.distDir>
    <avro.docDir>build/avro-doc-${project.version}/api</avro.docDir>    
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.0</version>
        <configuration>
          <rules>
            <requireProperty>
             <property>avro.version</property>
             <message>*****!!!!!!   Must have property avro.version set to enforce version.   !!!!!!*****</message>
            </requireProperty>
            <requireProperty>
              <property>project.version</property>
              <regex>${avro.version}</regex>
              <regexMessage>*****!!!!!   Version of project must be ${avro.version}   !!!!!*****</regexMessage>
            </requireProperty>
          </rules>
          <fail>true</fail>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>rat</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <configuration>
              <target name="rat">
                <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
                    reportFile="build/rat-report.log">
                  <fileset dir="build/avro-src-${project.version}/"
                           excludesfile="share/rat-excludes.txt"/>
                </rat:report>
                <condition property="rat.passed">
                  <isfileselected file="build/rat-report.log">
                    <containsregexp expression="^0 Unknown Licenses"/>
                  </isfileselected>
                </condition>
                <fail unless="rat.passed">Unknown licenses: See build/rat-report.log.</fail>
              </target>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-tasks</artifactId>
                <version>0.7</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>copy-artifacts</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <configuration>
              <target name="copy-java-artifacts">
                <mkdir dir="${avro.distDir}/java"/>
                <copy todir="${avro.distDir}/java" verbose="true">
                 <flattenmapper/>
                 <fileset dir="lang/java/"
                           includes="*/target/*${project.version}*.jar"
                           excludes="**/original-*.jar **/*tests.jar"/>
                </copy>
                
                <mkdir dir="${avro.docDir}"/>
                <copy todir="${avro.docDir}/java">
                  <fileset dir="lang/java/target/site/apidocs"/>
                </copy>
              </target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
