<?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>
  <extend>${basedir}/../tag-project.xml</extend>
  <id>commons-jelly-tags-swt</id>
  <name>commons-jelly-tags-swt</name>

  <package>org.apache.commons.jelly.tags.swt</package>

  <description>
      This is a Jelly interface for SWT.
  </description>
  <shortDescription>Commons Jelly SWT Tag Library</shortDescription>
  
  <!-- <siteDirectory>/www/jakarta.apache.org/commons/jelly/tags/swt</siteDirectory>
  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/jelly/tags/swt</distributionDirectory>
  <repository>
    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/jelly/jelly-tags/swt/</connection>
    <url>http://cvs.apache.org/viewcvs/jakarta-commons/jelly/jelly-tags/swt/</url>
  </repository>-->
  
    
  <dependencies>
  
    
  
    <!-- START for compilation -->
  
    <dependency>
      <id>commons-jelly</id>
      <version>SNAPSHOT</version>
    </dependency>
  
        <!-- swt taglib -->
    <dependency>
      <id>swt</id>
      
      <!-- don't know how to support OS-dependent jars in Maven yet -->
      <version>win32-2.1.0</version>
    </dependency>
    
    <!-- END for compilation -->
    
    <!-- START for running demos -->

    <dependency>
      <id>commons-cli</id>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-log</artifactId>
      <version>SNAPSHOT</version>
    </dependency>
        
    <!-- END for running demos -->
  </dependencies>
  
</project>
