 ~~ 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.
 
 ------
Download Apache MyFaces Extensions Validator
 ------

Download Apache MyFaces Extensions Validator


  Use the links below to download a distribution of Apache MyFaces Extensions Validator from
  one of our mirrors. It is good practice to verify the integrity of the
  distribution files.

  You will be prompted for a mirror - if the file is not found on yours, please be patient, as it may take 24
  hours to reach all mirrors.

  Apache MyFaces Extensions Validator is distributed as a <<<zip>>> archive (for Windows) and
  as a <<<tar.gz>>> archive (for UNIX). The content is the same. Please note
  that the <<<tar.gz>>> archives contain file names longer than 100 characters and have been
  created using GNU tar extensions. Thus they must be untarred with a GNU compatible
  version of tar.

  << Apache MyFaces Extensions Validator Distribution >>

*-------------------------+---------+----------+-----------+
|                         | Mirrors | Checksum | Signature |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 1.1 1.1.4 (tar.gz)     | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extval11-1.1.4-bin.tar.gz} myfaces-extval11-1.1.4-bin.tar.gz}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval11-1.1.4-bin.tar.gz.md5} myfaces-extval11-1.1.4-bin.tar.gz.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval11-1.1.4-bin.tar.gz.asc} myfaces-extval11-1.1.4-bin.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 1.1 1.1.4 (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extval11-1.1.4-bin.zip} myfaces-extval11-1.1.4-bin.zip}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval11-1.1.4-bin.zip.md5} myfaces-extval11-1.1.4-bin.zip.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval11-1.1.4-bin.zip.asc} myfaces-extval11-1.1.4-bin.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 1.1 1.1.4 Source (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extval-module-1.1.4-source-release.zip} myfaces-extval-module-1.1.4-source-release.zip}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extval-module-1.1.4-source-release.zip.md5} myfaces-extval-module-1.1.4-source-release.zip.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extval-module-1.1.4-source-release.zip.asc} myfaces-extval-module-1.1.4-source-release.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 1.2 1.2.6 (tar.gz)     | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extval12-1.2.6-bin.tar.gz} myfaces-extval12-1.2.6-bin.tar.gz}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval12-1.2.6-bin.tar.gz.md5} myfaces-extval12-1.2.6-bin.tar.gz.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval12-1.2.6-bin.tar.gz.asc} myfaces-extval12-1.2.6-bin.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 1.2 1.2.6 (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extval12-1.2.6-bin.zip} myfaces-extval12-1.2.6-bin.zip}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval12-1.2.6-bin.zip.md5} myfaces-extval12-1.2.6-bin.zip.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval12-1.2.6-bin.zip.asc} myfaces-extval12-1.2.6-bin.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 1.2 1.2.6 Source (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extval-module-1.2.6-source-release.zip} myfaces-extval-module-1.2.6-source-release.zip}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extval-module-1.2.6-source-release.zip.md5} myfaces-extval-module-1.2.6-source-release.zip.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extval-module-1.2.6-source-release.zip.asc} myfaces-extval-module-1.2.6-source-release.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 2.0 2.0.8 (tar.gz)     | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extval20-2.0.8-bin.tar.gz} myfaces-extval20-2.0.8-bin.tar.gz}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval20-2.0.8-bin.tar.gz.md5} myfaces-extval20-2.0.8-bin.tar.gz.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval20-2.0.8-bin.tar.gz.asc} myfaces-extval20-2.0.8-bin.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 2.0 2.0.8 (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extval20-2.0.8-bin.zip} myfaces-extval20-2.0.8-bin.zip}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval20-2.0.8-bin.zip.md5} myfaces-extval20-2.0.8-bin.zip.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extval20-2.0.8-bin.zip.asc} myfaces-extval20-2.0.8-bin.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions Validator for JSF 2.0 2.0.8 Source (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extval-module-2.0.8-source-release.zip} myfaces-extval-module-2.0.8-source-release.zip}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extval-module-2.0.8-source-release.zip.md5} myfaces-extval-module-2.0.8-source-release.zip.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extval-module-2.0.8-source-release.zip.asc} myfaces-extval-module-2.0.8-source-release.zip.asc}} |
*-------------------------+---------+----------+-----------+

Latest source code from SVN repository

    If you want to use the latest Apache MyFaces Extensions Validator features, the source code is under
    version control with SVN.  Click {{{source-repository.html} here }}
    for information on how to use the ASF Extensions Validator SVN Repository.

Verifying checksums

    It is essential that you verify the integrity of the downloaded
    files using the PGP and MD5 signatures. MD5 verification ensures the
    file was not corrupted during the download process. PGP verification
    ensures that the file came from a certain person.

    To verify the MD5 signature on the files, you need to use a program
    called <<<md5>>> or <<<md5sum>>>, which is
    included in many UNIX distributions.  It is also available as part of
    {{{http://www.gnu.org/software/textutils/textutils.html}GNU Textutils}}.
    Windows users can get binary md5 programs from {{{http://www.fourmilab.ch/md5/}here}},
    {{{http://www.pc-tools.net/win32/freeware/console/}here}}, or
    {{{http://www.slavasoft.com/fsum/}here}}.

Verifying signatures

  	PGP verification ensures that the file came from a certain person.  We strongly recommend
	  you verify your downloads with both PGP and MD5.

	The PGP signatures can be verified using {{{http://www.pgpi.org/}PGP}} or 
	{{{http://www.gnupg.org/}GPG}}.  First download the Apache MyFaces 
	{{{http://www.apache.org/dist/myfaces/KEYS}KEYS}}	as well as the <<<asc>>> signature file 
	for the particular distribution. It is important that you get these files from the ultimate
	trusted source - the main ASF distribution site, rather than from a mirror.
	Then verify the signatures using ...

	  <<<
	  % pgpk -a KEYS
	  % pgpv myfaces-extval12-1.2.6-bin.tar.gz.asc myfaces-extval12-1.2.6-bin.tar.gz
	  >>>

	  <or>

	  <<<
	  % pgp -ka KEYS
	  % pgp myfaces-extval12-1.2.6-bin.tar.gz.asc myfaces-extval12-1.2.6-bin.tar.gz
	  >>>

	  <or>

	  <<<
  	% gpg --import KEYS
	  % gpg --verify myfaces-extval12-1.2.6-bin.tar.gz.asc myfaces-extval12-1.2.6-bin.tar.gz
	  >>>
