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


    <preGoal name="site">
        <copy todir="${maven.build.dir}/docs/images">
            <fileset dir="${basedir}/src/site/resources/images"/>
        </copy>
    </preGoal>

    <postGoal name="jar:jar">
        <ant:ant antfile="build-other-jars.xml" target="other-jars">
            <property name="component.version" value="${pom.currentVersion}"/>
            <property name="build.home"        value="${maven.build.dir}"/>
            <property name="dist.home"         value="${maven.build.dir}"/>
        </ant:ant>
    </postGoal>
  
    <!-- ================================================================== -->
    <!-- Copy into the binary distribution                                  -->
    <!-- ================================================================== -->
    <postGoal name="dist:prepare-bin-filesystem">

        <!-- Create a jar file containing the sources -->
        <jar destfile="${maven.dist.bin.assembly.dir}/${maven.final.name}-sources.jar">
            <zipfileset prefix="META-INF" dir="${basedir}"
                includes="LICENSE*, NOTICE*"/>
            <fileset dir="${basedir}/src/java" includes="**/*.java"/>
        </jar>

        <!-- Create a jar file containing the Javadocs -->
        <jar destfile="${maven.dist.bin.assembly.dir}/${maven.final.name}-javadoc.jar">
            <zipfileset prefix="META-INF" dir="${basedir}"
                includes="LICENSE*, NOTICE*"/>
            <fileset dir="${basedir}/target/docs/apidocs"/>
        </jar>

         <!-- Copy the NOTICE -->
         <copy todir="${maven.dist.bin.assembly.dir}">
             <fileset file="${basedir}/NOTICE.txt"/>
             <fileset file="${basedir}/RELEASE-NOTES.txt"/>
             <fileset file="${maven.build.dir}/commons-beanutils-core*.jar"/>
             <fileset file="${maven.build.dir}/commons-beanutils-bean-collections*.jar"/>
         </copy>

    </postGoal>

    <!-- ================================================================== -->
    <!-- Copy into the source distribution                                  -->
    <!-- ================================================================== -->
    <postGoal name="dist:prepare-src-filesystem">

         <!-- Copy the NOTICE -->
         <copy todir="${maven.dist.src.assembly.dir}">
             <fileset file="${basedir}/build-other-jars.xml"/>
             <fileset file="${basedir}/checkstyle.xml"/>
             <fileset file="${basedir}/license-header.txt"/>
             <fileset file="${basedir}/pom.xml"/>
             <fileset file="${basedir}/NOTICE.txt"/>
             <fileset file="${basedir}/RELEASE-NOTES.txt"/>
             <fileset file="${basedir}/build.properties.sample"/>
         </copy>

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

    </postGoal>

    <!-- ================================================================== -->
    <!-- Create MD5 Check Sums                                              -->
    <!-- ================================================================== -->
    <postGoal name="dist">

         <!-- Create a versioned pom -->
         <copy file="${basedir}/project.xml" tofile="${maven.dist.dir}/${maven.final.name}.pom"/>

         <!-- create checksum for pom -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.pom" property="pom.md5"/>
         <ant:echo message="${pom.md5} *${maven.final.name}.pom" 
                   file="${maven.dist.dir}/${maven.final.name}.pom.md5" />

         <copy todir="${maven.dist.dir}">
             <fileset file="${maven.dist.bin.assembly.dir}/commons-beanutils*.jar"/>
         </copy>

         <!-- create checksum for jar -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.jar" property="jar.md5"/>
         <ant:echo message="${jar.md5} *${maven.final.name}.jar" 
                   file="${maven.dist.dir}/${maven.final.name}.jar.md5" />

         <!-- create checksum for core jar -->
         <ant:checksum file="${maven.dist.dir}/commons-beanutils-core-${pom.currentVersion}.jar"
                    property="core.jar.md5"/>
         <ant:echo message="${core.jar.md5} *commons-beanutils-core-${pom.currentVersion}.jar" 
                   file="${maven.dist.dir}/commons-beanutils-core-${pom.currentVersion}.jar.md5" />

         <!-- create checksum for bean-collections jar -->
         <ant:checksum file="${maven.dist.dir}/commons-beanutils-bean-collections-${pom.currentVersion}.jar"
                    property="bean.collections.jar.md5"/>
         <ant:echo message="${bean.collections.jar.md5} *commons-beanutils-bean-collections-${pom.currentVersion}.jar" 
                   file="${maven.dist.dir}/commons-beanutils-bean-collections-${pom.currentVersion}.jar.md5" />

         <!-- create checksum for sources jar -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-sources.jar" property="sources.jar.md5"/>
         <ant:echo message="${sources.jar.md5} *${maven.final.name}-sources.jar" 
                   file="${maven.dist.dir}/${maven.final.name}-sources.jar.md5" />

         <!-- create checksum for javadoc jar -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-javadoc.jar" property="javadoc.jar.md5"/>
         <ant:echo message="${javadoc.jar.md5} *${maven.final.name}-javadoc.jar" 
                   file="${maven.dist.dir}/${maven.final.name}-javadoc.jar.md5" />

         <!-- create checksum for binary zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.zip" property="zip.md5"/>
         <ant:echo message="${zip.md5} *${maven.final.name}.zip" 
                   file="${maven.dist.dir}/${maven.final.name}.zip.md5" />

         <!-- create checksum for binary tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.tar.gz" property="tar.gz.md5"/>
         <ant:echo message="${tar.gz.md5} *${maven.final.name}.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}.tar.gz.md5" />

         <!-- create checksum for source zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.zip" property="src.zip.md5"/>
         <ant:echo message="${src.zip.md5} *${maven.final.name}-src.zip" 
                   file="${maven.dist.dir}/${maven.final.name}-src.zip.md5" />

         <!-- create checksum for source tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.tar.gz" property="src.tar.gz.md5"/>
         <ant:echo message="${src.tar.gz.md5} *${maven.final.name}-src.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}-src.tar.gz.md5" />

    </postGoal>

</project>
