<?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="htmlsoff" default="all" basedir=".">

    <property file="../inc/antbuild.properties"/>
        
    <path id="classpath">
        <pathelement location="${build.dir}/xmerge.jar"/>
    </path>


    <target name="init" >
    </target>

    <!-- compile java sources in ${package} -->
    <target name="compile" depends="init">
    </target>
    
    <!-- package to jar -->
    <target name="jar" depends="compile">
        <jar destfile="${target.jar}">
            <fileset dir="${basedir}"
                     includes="*.xsl" />
            <metainf dir="${basedir}">
                <filename name="converter.xml"/>
            </metainf>
         </jar>
    </target>

    <!-- clean up -->
    <target name="clean">
        <delete file="${target.jar}"/>
    </target>
    
    <target name="all" depends="jar">
    </target>
     
</project>

