			Apache Ivy (TM) [version]
		   ---------------------------

Supported Platforms
--------------------

Apache Ivy requires Java level 1.4; it has been tested with Sun Java SDK v1.4.2

Even if not mandatory, Apache Ivy is most of the times used with Apache Ant, 
for which version 1.6.0 or greater is required.

Installation
-------------

Please read doc/install.html for installation instructions.
      

Getting Started
----------------

For an introduction to Apache Ivy and how to use it, please read the documentation 
located in the doc subdirectory.  A good place to start is the index.html


Licensing
---------

This software is licensed under the terms you may find in the file 
named "LICENSE" in this directory.


Crypto Notice
-------------
This distribution includes cryptographic software.  The country in 
which you currently reside may have restrictions on the import, 
possession, use, and/or re-export to another country, of 
encryption software.  BEFORE using any encryption software, please 
check your country's laws, regulations and policies concerning the
import, possession, or use, and re-export of encryption software, to 
see if this is permitted.  See <http://www.wassenaar.org/> for more
information.

The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity 
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms.  The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS 
Export Administration Regulations, Section 740.13) for both object 
code and source code.

The following provides more details on the included cryptographic
software:

The Ivy ssh resolver requires the JSch library
<http://www.jcraft.com/jsch/index.html>. 
The sftp and https resolvers requires the Java Cryptography extensions
<http://java.sun.com/javase/technologies/security/>.
The PGP signature generator requires the BouncyCastle Java cryptography APIs
<http://www.bouncycastle.org/java.html>.


