 <!--
   Copyright 2002-2004 The Apache Software Foundation

   Licensed 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:deploy="deploy" default="jar:jar" xmlns:ant="jelly:ant"> 

  <!-- ================================================================== -->
  <!-- START : C O M M O N S - B U I L D                                  -->
  <!-- ================================================================== -->
  <!-- Required: Look and Feel for documentation within distributions     -->
  <!-- ================================================================== -->
  <postGoal name="xdoc:copy-resources">  
    <copy todir="${basedir}/target/docs/style/" failonerror="false">
      <fileset dir="${basedir}/../commons-build/xdocs/style">
      	<include name='**/*'/>
      	<exclude name='**/CVS/**'/>
      </fileset>
    </copy>
  </postGoal>
  <!-- ================================================================== -->
  <!-- END: C O M M O N S - B U I L D                                     -->
  <!-- ================================================================== -->

  <goal name="cut-math-release">
		<attainGoal name="convert-snapshots" />
		<attainGoal name="dist" />
  </goal>

  <preGoal name="dist:build-bin">  
    <attainGoal name="announcement:generate" />
    <copy todir="${maven.dist.bin.assembly.dir}">
      <fileset file='${basedir}/NOTICE.txt'/>
      <fileset file='${basedir}/RELEASE-NOTES.txt'/>
    </copy>
  </preGoal>
  
  <preGoal name="dist:build-src">
    <copy todir="${maven.dist.src.assembly.dir}">
      <fileset file='${basedir}/checkstyle.xml'/>
      <fileset file='${basedir}/license-header.txt'/>
      <fileset file='${basedir}/build.properties.sample'/>
      <fileset file='${basedir}/NOTICE.txt'/>
      <fileset file='${basedir}/RELEASE-NOTES.txt'/>
      <fileset file='${basedir}/release-notes.jsl'/>
    </copy>
    <copy todir="${maven.dist.src.assembly.dir}/xdocs">
        <fileset dir="./xdocs"/>
    </copy>
    <delete dir="${maven.dist.src.assembly.dir}/src/experimental" />
    <move todir="${maven.dist.src.assembly.dir}-src">
      <fileset dir="${maven.dist.src.assembly.dir}"/>
    </move>
  </preGoal>

<!-- Uncomment when ant plugin relative path bug is fixed (still present in 1.8)
  <preGoal name="dist">
  	<attainGoal name="ant" />
  </preGoal>
-->

<!-- Uncomment to include compile time dependent jars (discovery, logging)
  <preGoal name="dist:build-bin">
    <deploy:copy-deps todir="${maven.build.dir}/${maven.final.name}/bin/${maven.final.name}" />
  </preGoal>
 -->
 
 <!-- Limit maven resources included in site generation -->
  <postGoal name="xdoc:copy-resources">  
    <delete includeEmptyDirs="true">
      <fileset dir="${maven.docs.dest}" 
        includes="${maven.xdoc.copy.excludes},${maven.xdoc.copy.excludes.classic}"/>
    </delete>
  </postGoal>

</project>
