<?xml version="1.0" ?>
<!--
  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>
  <extend>${basedir}/../tag-project.xml</extend>
  <id>commons-jelly-tags-soap</id>
  <name>commons-jelly-tags-soap</name>
  <currentVersion>1.1-SNAPSHOT</currentVersion>
  <package>org.apache.commons.jelly.tags.soap</package>

  <description>
      This is a Jelly interface for SOAP.
  </description>
  <shortDescription>Commons Jelly SOAP Tag Library</shortDescription>
  
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>COMMONS-JELLY-SOAP-1_0</tag>
    </version>
  </versions>

  <dependencies>

    <!-- START for compilation -->
    <dependency>
      <id>axis</id>
      <version>1.0</version>
      <properties>
        <gump.project>ws-axis</gump.project>
        <gump.id>axis</gump.id>
      </properties>
    </dependency>

    <dependency>
      <groupId>commons-httpclient</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>2.0</version>
    </dependency>

    <!-- can be found in jwsdp-1.3/jaxrpc/lib -->
    <dependency>
      <groupId>jaxrpc</groupId>
      <artifactId>jaxrpc-api</artifactId>
      <version>1.1-FCS</version>
      <url>http://java.sun.com/webservices/webservicespack.html</url>
      <properties>
        <gump.project>ws-axis</gump.project>
        <gump.id>axis-jaxrpc</gump.id>
      </properties>
    </dependency>
    
    <!-- can be found in jwsdp-1.3/saaj/lib -->
    <dependency>
      <groupId>saaj</groupId>
      <artifactId>saaj-api</artifactId>
      <version>1.2-FCS</version>
      <url>http://java.sun.com/webservices/webservicespack.html</url>
      <properties>
        <gump.project>ws-axis</gump.project>
        <gump.id>axis-saaj</gump.id>
      </properties>
    </dependency>

		
    <dependency><!-- just for javax.xml.namespace.QName... was taken out of jaxrpc in some version jwsdp -->
      <groupId>jaxme</groupId>
      <artifactId>jaxme-api</artifactId>
      <version>0.3</version>
      <properties>
        <gump.project>ws-jaxme</gump.project>
        <gump.id>api</gump.id>
      </properties>
    </dependency>

    <!-- START for running demos -->

    <dependency>
      <id>commons-cli</id>
      <version>1.0</version>
    </dependency>
    <dependency>
      <id>commons-discovery</id>
      <version>20030211.213356</version>
    </dependency>
    <dependency>
      <id>servletapi</id>
      <version>2.3</version>
      <url>http://java.sun.com/products/servlets/</url>
      <properties>
        <gump.project>jakarta-servletapi-5-servlet</gump.project>
      </properties>
    </dependency>
        
    <!-- END for running demos -->
  </dependencies>
  
</project>
