<!--
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 default="jar:jar"
  xmlns:j="jelly:core">

  <!-- Ensures that the release notes and NOTICE.txt are included in the
       source distro.
   -->
  <postGoal name="dist:prepare-src-filesystem">
    <j:set var="maven.dist.src.assembly.dir" value="${pom.getPluginContext('maven-dist-plugin').getVariable('maven.dist.src.assembly.dir')}" />
    <copy todir="${maven.dist.src.assembly.dir}">
      <fileset file="${basedir}/NOTICE.txt"/>
      <fileset file="${basedir}/RELEASE-NOTES.txt"/>
    </copy>
  </postGoal>

  <!-- Ensures that release notes NOTICE.txt is added to the binary distro -->
  <preGoal name="dist:build-bin">
    <copy todir="${maven.dist.bin.assembly.dir}">
      <fileset file="${basedir}/NOTICE.txt"/>
      <fileset file="${basedir}/RELEASE-NOTES.txt"/>
    </copy>
  </preGoal>

 <preGoal name="dist:prepare-bin-filesystem">
   <attainGoal name="ant:generate-build"/>
 </preGoal>

 <preGoal name="dist:prepare-src-filesystem">
   <attainGoal name="ant:generate-build"/>
 </preGoal>

</project>
