<?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>
  <extend>${basedir}/../tag-project.xml</extend>
  <artifactId>commons-jelly-tags-xmlunit</artifactId>
  <name>commons-jelly-tags-xmlunit</name>
  <currentVersion>1.0.1-SNAPSHOT</currentVersion>
  <package>org.apache.commons.jelly.tags.xmlunit</package>
  <description>This is a Jelly interface for unit testing XML applications.</description>
  <shortDescription>Commons Jelly XMLUnit Tag Library</shortDescription>
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>COMMONS-JELLY-XMLUNIT-1_0</tag>
    </version>
  </versions>
  <dependencies>
    <!-- START for compilation -->
    <dependency>
      <groupId>xmlunit</groupId>
      <artifactId>xmlunit</artifactId>
      <version>1.0</version>
    </dependency>
    <!-- for some reason I had to add this in or the 1.3.1 compiler barfed -->

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
    </dependency>
    <!-- END for compilation -->
    <!-- START for testing -->

    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-junit</artifactId>
      <version>1.0</version>
      <url>http://commons.apache.org/jelly/tags/junit/</url>
      <properties>
        <scope>test</scope>
      </properties>
    </dependency>
    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-xml</artifactId>
      <version>1.0</version>
      <properties>
        <scope>test</scope>
      </properties>
    </dependency>
    <dependency>
      <groupId>xalan</groupId>
      <artifactId>xalan</artifactId>
      <version>2.3.1</version>
      <url>http://xml.apache.org/xalan-j/</url>
      <properties>
        <scope>test</scope>
      </properties>
    </dependency>
    <!-- END for testing -->

  </dependencies>
</project>
