<!--
   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 name="Collections Test Framework jar" default="jar" basedir=".">


<!--
        $Id$
-->


<!-- ========== Component Declarations ==================================== -->


  <!-- The current version number of this component -->
  <property name="component.version"       value=""/>

  <!-- The base directory for compiled test classes -->
  <property name="test.classes"            value="target/test-classes"/>

  <!-- The base directory for distribution targets -->
  <property name="dist.home"               value="target"/>

  <!-- JDK versions -->
  <property name="maven.compile.source"    value=""/>
  <property name="maven.compile.target"    value=""/>


<!-- ========== Executable Targets ======================================== -->

  <target name="jar" description="Create Collections Test Framework jar">
    <mkdir      dir="${dist.home}"/>
    <mkdir      dir="${test.classes}/META-INF"/>
    <copy      file="LICENSE.txt" tofile="${test.classes}/META-INF/LICENSE.txt"/>
    <copy      file="NOTICE.txt"  tofile="${test.classes}/META-INF/NOTICE.txt"/>
    <jar    jarfile="${dist.home}/commons-collections-testframework-${component.version}.jar">
        <manifest>
            <attribute name="Specification-Title" value="Commons Collections Test Framework"/>
            <attribute name="Specification-Version" value="${component.version}"/>
            <attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
            <attribute name="Implementation-Title" value="Commons Collections Test Framework"/>
            <attribute name="Implementation-Version" value="${component.version}"/> 
            <attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
            <attribute name="Implementation-Vendor-Id" value="org.apache"/>
            <attribute name="X-Compile-Source-JDK" value="${maven.compile.source}"/>
            <attribute name="X-Compile-Target-JDK" value="${maven.compile.target}"/>
        </manifest>
        <fileset dir="${test.classes}">
            <include name="**/LICENSE.txt"/>
            <include name="**/NOTICE.txt"/>
            <include name="**/AbstractTest*.class"/>
            <include name="**/BulkTest*.class"/>
        </fileset>
    </jar>
  </target>

</project>
