<?xml version="1.0" encoding="UTF-8"?>
<!--
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="OFBiz - Base" default="jar" basedir=".">
    <import file="../../common.xml"/>

    <!-- ================================================================== -->
    <!-- Initialization of all property settings                            -->
    <!-- ================================================================== -->

    <property name="desc" value="Base API"/>
    <property name="name" value="ofbiz-base"/>
    <property name="ofbiz.home.dir" value="../.."/>

    <path id="local.class.path">
        <fileset dir="${lib.dir}" includes="*.jar"/>
        <fileset dir="${lib.dir}/commons" includes="*.jar"/>
        <fileset dir="${lib.dir}/j2eespecs" includes="*.jar"/>
        <fileset dir="${lib.dir}/scripting" includes="*.jar"/>
        <fileset dir="../start/build/lib" includes="*.jar"/>
    </path>
    <patternset id="src-dirs">
        <include name="build/gen-src/javacc"/>
    </patternset>

    <filelist id="test.classes" dir="${src.dir}">
        <file name="org/ofbiz/base/lang/test/ComparableRangeTests.java"/>
        <file name="org/ofbiz/base/util/test/IndentingWriterTests.java"/>
        <file name="org/ofbiz/base/util/test/ObjectTypeTests.java"/>
        <file name="org/ofbiz/base/util/test/UtilObjectTests.java"/>
        <file name="org/ofbiz/base/util/string/test/FlexibleStringExpanderTests.java"/>
        <file name="org/ofbiz/base/util/collections/test/FlexibleMapAccessorTests.java"/>
        <file name="org/ofbiz/base/util/test/TimeDurationTests.java"/>
        <file name="org/ofbiz/base/util/cache/test/UtilCacheTests.java"/>
        <file name="org/ofbiz/base/json/test/JSONTests.java"/>
        <file name="org/ofbiz/base/conversion/test/DateTimeTests.java"/>
        <file name="org/ofbiz/base/conversion/test/MiscTests.java"/>
        <file name="org/ofbiz/base/util/test/UtilIOTests.java"/>
        <file name="org/ofbiz/base/test/BaseUnitTests.java"/>
        <file name="org/ofbiz/base/util/collections/test/GenericMapTest.java"/>
        <file name="org/ofbiz/base/concurrent/test/SyncTTLObjectTest.java"/>
        <file name="org/ofbiz/base/concurrent/test/AsyncTTLObjectTest.java"/>
        <file name="org/ofbiz/base/concurrent/test/TTLCachedObjectTest.java"/>
    </filelist>

    <target name="init">
        <!-- make sure we have crypto packages available -->
        <condition property="exclude.crypto" value="org/ofbiz/base/crypto/**">
            <not>
                <available classname="javax.crypto.Cipher" classpathref="local.class.path"/>
            </not>
        </condition>
        <condition property="exclude.cobertura" value="org/ofbiz/base/config/Cobertura*.java">
            <not>
                <available classname="net.sourceforge.cobertura.instrument.ClassInstrumenter" classpathref="local.class.path"/>
            </not>
        </condition>
        <patternset id="src.exc.set">
            <exclude name="${exclude.cobertura}"/>
            <exclude name="${exclude.crypto}"/>
            <exclude name="org/ofbiz/base/util/OfbizJsBsfEngine.java"/>
        </patternset>
    </target>

    <target name="gen-src">
        <ofbiz-javacc dir="org/ofbiz/base/json" file="JSON"/>
    </target>

    <target name="classes" depends="prepare,gen-src">
        <javac16/>
    </target>

    <target name="jar" depends="classes">
        <jar jarfile="${build.dir}/lib/${name}.jar">
            <fileset dir="${build.dir}/classes"/>
            <fileset dir="${src.dir}">
                <include name="**/*.properties,**/*.xml,**/*.bsh,**/*.logic,**/*.js,**/*.jacl,**/*.py"/>
                <include name="META-INF/**"/>
            </fileset>
            <!-- also put the DTDs in the jar file... -->
            <fileset dir="${dtd.dir}" includes="*.dtd"/>
            <!-- now add the NOTICE and LICENSE files to allow the jar file to be distributed alone -->
            <zipfileset dir="${ofbiz.home.dir}" prefix="META-INF" includes="NOTICE,LICENSE"/>
        </jar>
    </target>
</project>
