  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.

Jelly
=====

Welcome to Jakarta commons Jelly.
The home page of the project is at 
    http://commons.apache.org/jelly

This binary distribution allows you to run jelly out of
the box. It is enough to have the java and jelly (or jelly.bat) 
commands in your path of accessible commands..
    
Jelly is made of a core with a number of individual tag libraries.
This binary distribution includes the following tag-libraries:
- bean
- define
- dynabean
- fmt
- interaction
- junit
- log
- swing
- util
- xml

More can be installed by hand by dropping the jars and the dependencies jars
in the lib directory (the dependencies can be seen, for each tag-library, in
the project info section of the documentation).

Please refer to the shipped documentation (in the docs directory) and the 
project website for documentation for each tag-libraries and for example.

Apache Commons Jelly is an open-source project of the Apache Software Foundation
which relies on feedback of its users on both the issue tracking and the 
mailing-lists. We look forward to hear from you!

Enjoy!
