Apache BVal - README.txt
Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------

About
=====
This is an implementation of the Java Bean Validation (JSRs 303, 349, 380)
specification for Java EE and Java SE.
The technical objective is to provide a class level constraint declaration and
validation facility for the Java application developer, as well as a constraint
metadata repository and query API.


Release Notes
=============
Please refer to the included CHANGES.txt for a complete list of new features
available and issues resolved in this release.


Getting Started
===============
Please visit the project website for the latest information:
    http://bval.apache.org/

Along with the developer mailing list archive:
    http://mail-archives.apache.org/mod_mbox/bval-dev/


System Requirements
===================
You need a platform that supports Java SE 8 or later.
Most testing has been done with Java SE 8 on Mac OS X, Windows and Linux.


Building
==========================
To build from source code:
  - Sources require Java SE 8 or higher. 
  - The project is built with Apache Maven (suggested is at least 3.2.1).
    You need to download and install Maven from: http://maven.apache.org/
  - Invoke maven in the root directory or a module subdirectory:
      mvn install

Checkout the Building section on the project web site for more details:
    http://bval.apache.org/


Support
=======
Any problems with this release can be reported to the user mailing list or
opened in the Jira issue tracker.

  Mailing list archive:
    http://mail-archives.apache.org/mod_mbox/bval-user/

  User mailing list:
    user@bval.apache.org

  User mailing list subscription:
    user-subscribe@bval.apache.org

  Jira:
    https://issues.apache.org/jira/browse/BVAL/

--------------------------------------------------------------------------------

