 ~~ 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 CDI
 ------

Download Apache MyFaces Extensions CDI


  Use the links below to download a distribution of Apache MyFaces Extensions CDI 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 CDI 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 CDI Distribution >>

*-------------------------+---------+----------+-----------+
|                         | Mirrors | Checksum | Signature |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 1.2 1.0.5 (tar.gz)     | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extcdi-assembly-jsf12-1.0.5-bin.tar.gz} myfaces-extcdi-assembly-jsf12-1.0.5-bin.tar.gz}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf12-1.0.5-bin.tar.gz.md5} myfaces-extcdi-assembly-jsf12-1.0.5-bin.tar.gz.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf12-1.0.5-bin.tar.gz.asc} myfaces-extcdi-assembly-jsf12-1.0.5-bin.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 1.2 1.0.5 (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extcdi-assembly-jsf12-1.0.5-bin.zip} myfaces-extcdi-assembly-jsf12-1.0.5-bin.zip}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf12-1.0.5-bin.zip.md5} myfaces-extcdi-assembly-jsf12-1.0.5-bin.zip.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf12-1.0.5-bin.zip.asc} myfaces-extcdi-assembly-jsf12-1.0.5-bin.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 1.2 1.0.5 Source (tar.gz)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extcdi-assembly-jsf12-1.0.5-src.tar.gz} myfaces-extcdi-assembly-jsf12-1.0.5-src.tar.gz}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf12-1.0.5-src.tar.gz.md5} myfaces-extcdi-assembly-jsf12-1.0.5-src.tar.gz.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf12-1.0.5-src.tar.gz.asc} myfaces-extcdi-assembly-jsf12-1.0.5-src.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 1.2 1.0.5 Source (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extcdi-assembly-jsf12-1.0.5-src.zip} myfaces-extcdi-assembly-jsf12-1.0.5-src.zip}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf12-1.0.5-src.zip.md5} myfaces-extcdi-assembly-jsf12-1.0.5-src.zip.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf12-1.0.5-src.zip.asc} myfaces-extcdi-assembly-jsf12-1.0.5-src.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 2.0 1.0.5 (tar.gz)     | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz} myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz.md5} myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz.asc} myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 2.0 1.0.5 (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-extcdi-assembly-jsf20-1.0.5-bin.zip} myfaces-extcdi-assembly-jsf20-1.0.5-bin.zip}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf20-1.0.5-bin.zip.md5} myfaces-extcdi-assembly-jsf20-1.0.5-bin.zip.md5}} | {{{http://www.apache.org/dist/myfaces/binaries/myfaces-extcdi-assembly-jsf20-1.0.5-bin.zip.asc} myfaces-extcdi-assembly-jsf20-1.0.5-bin.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 2.0 1.0.5 Source (tar.gz)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extcdi-assembly-jsf20-1.0.5-src.tar.gz} myfaces-extcdi-assembly-jsf20-1.0.5-src.tar.gz}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf20-1.0.5-src.tar.gz.md5} myfaces-extcdi-assembly-jsf20-1.0.5-src.tar.gz.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf20-1.0.5-src.tar.gz.asc} myfaces-extcdi-assembly-jsf20-1.0.5-src.tar.gz.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI for JSF 2.0 1.0.5 Source (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extcdi-assembly-jsf20-1.0.5-src.zip} myfaces-extcdi-assembly-jsf20-1.0.5-src.zip}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf20-1.0.5-src.zip.md5} myfaces-extcdi-assembly-jsf20-1.0.5-src.zip.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-assembly-jsf20-1.0.5-src.zip.asc} myfaces-extcdi-assembly-jsf20-1.0.5-src.zip.asc}} |
*-------------------------+---------+----------+-----------+
| MyFaces Extensions CDI 1.0.5 Source-Release (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/myfaces-extcdi-parent-1.0.5-source-release.zip} myfaces-extcdi-parent-1.0.5-source-release.zip}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-parent-1.0.5-source-release.zip.md5} myfaces-extcdi-parent-1.0.5-source-release.zip.md5}} | {{{http://www.apache.org/dist/myfaces/source/myfaces-extcdi-parent-1.0.5-source-release.zip.asc} myfaces-extcdi-parent-1.0.5-source-release.zip.asc}} |
*-------------------------+---------+----------+-----------+

Latest source code from SVN repository

    If you want to use the latest Apache MyFaces Extensions CDI features, the source code is under
    version control with SVN.  Click {{{source-repository.html} here }}
    for information on how to use the ASF Extensions CDI 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-extcdi-assembly-jsf20-1.0.5-bin.tar.gz.asc myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz
	  >>>

	  <or>

	  <<<
	  % pgp -ka KEYS
	  % pgp myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz.asc myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz
	  >>>

	  <or>

	  <<<
  	  % gpg --import KEYS
	  % gpg --verify myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz.asc myfaces-extcdi-assembly-jsf20-1.0.5-bin.tar.gz
	  >>>
