# Apache MyFaces Core
[![Build Status](https://travis-ci.com/apache/myfaces.svg?branch=3.0.x)](https://travis-ci.com/apache/myfaces)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

Apache's implementation of the JavaServer Faces (JSF) and Jakarta Faces specification

### 3.0.x Branch

The upcoming Jakarta Faces 3.0. It's equals to JSF 2.3 but with "jakarta.faces" packages and constants instead of "javax.faces".

## Minimum Requirements

- Java 1.8
- Servlet 5.0
- EL 3.0
- CDI 3.0
- JSTL 2.0 (optional)
- BV 2.0 (optional)

## Installation

mvn clean install
