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

  <!-- need various bits in the src build. Binary build is handled by Ant -->
  <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 Files -->
    <copy todir="${maven.dist.src.assembly.dir}">
      <fileset dir=".">
        <include name="RELEASE-NOTES*.txt"/>
        <include name="NOTICE.txt"/>
        <include name="STATUS.html"/>
        <include name="default.properties"/>
        <include name="checkstyle.xml"/>
      </fileset>
    </copy>

    <!-- Copy XDocs -->
    <copy todir="${maven.dist.src.assembly.dir}/xdocs">
      <fileset dir="xdocs" />
    </copy>

  </postGoal>

  <!-- Release process uses ant for Binary build, however for completeness... -->
  <postGoal name="dist:prepare-bin-filesystem">

    <copy todir="${maven.dist.bin.assembly.dir}">
      <fileset file="${basedir}/NOTICE.txt"/>
      <fileset file="${basedir}/RELEASE-NOTES.txt"/>
    </copy>

  </postGoal>
  
</project>
