【发布时间】:2015-04-13 08:11:28
【问题描述】:
当我们使用 JSF 1.2-09 时,我们有以下依赖项:
<dependency>
<groupId>el-impl</groupId>
<artifactId>el-impl</artifactId>
<version>1.0</version>
</dependency>
但是现在,我们正在更新到 JSF 2.1.29-01,现在还不清楚我应该使用哪个版本?
【问题讨论】:
当我们使用 JSF 1.2-09 时,我们有以下依赖项:
<dependency>
<groupId>el-impl</groupId>
<artifactId>el-impl</artifactId>
<version>1.0</version>
</dependency>
但是现在,我们正在更新到 JSF 2.1.29-01,现在还不清楚我应该使用哪个版本?
【问题讨论】:
来自 JSF Tag Info 的最低要求:
JSF 2.1 使用了一些 Servlet 3.0 特有的特性,但是是倒退的 与 Servlet 2.5 兼容。这些 Servlet 3.0 特性是可选的。
如果我们查看 JSF 2.0 的最低要求,我们会发现:EL 2.1 与 Servlet 2.5 齐头并进
所以结论是 EL 2.1 是 推荐的 JSF 2.1 的 EL
【讨论】:
您使用的 EL 实现以及 el-api jar 是您的应用程序容器分发的一部分。由于 JSF 2.0/2.1 是由 Tomcat 7 实现的Java EE 6 技术堆栈的一部分,因此您应该链接到该 API 规范。
要编译您的源代码,您需要在 pom 中使用 <scope>provided</scope> 引用所需的 el-api 2.2,这样您的 Web 存档将不包含任何 EL 库,并避免与容器提供的库可能发生冲突。
【讨论】:
从Maven repository的信息来看,JSF 2.1依赖于el-api 1.0。
【讨论】:
1.0 只是最低要求的版本。
el-api 2.2 包含在 Tomcat 7 发行版中,因此您可以使用 <scope>provided</scope> 包含依赖项。