<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  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.  For additional information regarding
  copyright in this work, please see the NOTICE file in the top level
  directory of this distribution.
-->

<project name="pluginmodel" default="dist">
    
    <property name="tools" value="../../../../../../tools" />
    <property name="buildlib" value="../../../../build/lib" />
    
    <target name="dist">
        <mkdir dir="build" />
        <mkdir dir="dist" />
        <javac srcdir="src" destdir="build">
            <classpath>
                <pathelement path="${buildlib}/roller-business.jar" />
                <pathelement path="${buildlib}/roller-web.jar" />
                <pathelement path="${tools}/roller-core/roller-core.jar" />
                <pathelement path="${tools}/lib/commons-logging-1.0.4.jar" />
                <pathelement path="${tools}/buildtime/tomcat-5.0.28/servlet-api.jar" />
                <pathelement path="${tools}/buildtime/tomcat-5.0.28/jsp-api.jar" />
            </classpath>
        </javac>
        <jar basedir="build" destfile="dist/authusermodel.jar" />
    </target>

    <target name="clean" >
        <delete dir="build" />
        <delete dir="clean" />
    </target>
    
</project>
