<?xml version="1.0" encoding="UTF-8"?>
<!--
  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">

  <!-- define the classpath used to run examples -->
  <goal name="create-classpath" prereqs="java:compile,test:compile">
        <path id="test.classpath">
            <pathelement path="${maven.build.dest}"/>
            <pathelement path="target/classes"/>
            <pathelement path="target/test-classes"/>
            <path refid="maven.dependency.classpath"/>
        </path>
  </goal>

    <!-- demos -->
  <goal name="demo:rng" prereqs="create-classpath"
    description="Runs a validation demo, with RelaxNG">
    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
      <classpath refid="test.classpath"/>
      <arg value="src/test/org/apache/commons/jelly/tags/validate/validateRNG.jelly"/>
    </java>
  </goal>

  <goal name="demo:dtd" prereqs="create-classpath"
    description="Runs a validation demo, with DTD">
    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
      <classpath refid="test.classpath"/>
      <arg value="src/test/org/apache/commons/jelly/tags/validate/validateDTD.jelly"/>
    </java>
  </goal>

</project>
