
Welcome to Apache Pivot Quickstart Archetype
============================================

This is a Maven Archetype for generating Java Projects based on Apache Pivot.


Dependencies
============

* Apache Pivot
* JUnit


Documentation
=============

Pivot home page: http://pivot.apache.org/
JUnit home page: http://www.junit.org/
