<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed 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">

  <goal name="create-classpath" prereqs="java:compile,test:compile">
        <path id="test.classpath">
            <!-- add log4j config files to classpath -->
            <pathelement location="src/conf"/>
            
            <pathelement path="${maven.build.dest}"/>
            <pathelement path="target/classes"/>
            <pathelement path="target/test-classes"/>
            <path refid="maven.dependency.classpath"/>
            
        </path>
  </goal>

  <goal name="demo" prereqs="create-classpath"
        description="Runs the example quartz demo">
    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
      <classpath refid="test.classpath"/>
      <arg value="src/test/org/apache/commons/jelly/tags/quartz/example.jelly"/>
      <sysproperty key="log4j.configuration" value="src/conf/log4j.configuration"/>
        </java>
  </goal>


</project>
