起因
從 SVN checkout 一個 Maven project,project 包含 EAR、JPA、Web 3 個子專案,eclipse 顯示以下錯誤
JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer
這時候去 eclipse 的 project facets 把 Dynamic Web Module 選項改成 2.5 以上又不給改
解法
不能把 Dynamic Web Module 改成 2.3 以上是因為 Maven 建出來的 web.xml 長這樣
<!DOCTYPE web-app PUBLIC
“-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
“http://java.sun.com/dtd/web-app_2_3.dtd” >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
把 web.xml 改成這樣
<web-app xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd”
version=”3.0″>
<display-name>Archetype Created Web Application</display-name>
</web-app>
跑一次 Maven update 後去 eclipse 的 project facets 把 Dynamic Web Module 選項改成 3.0 還是不給改,這時候先把 Dynamic Web Module 的 checkbox 清掉按 Apply,然後勾選 Dynamic Web Module 後再按一次 Apply,再跑一次 Maven update 錯誤就消失了
註: JSF project 在 Eclipse 4.6.3 有一樣問題,解決方法是在 Eclipse 選單 Window > Preferences > Maven > Java EE Integration 把 JSF Configurator 選項清掉,然後再重新 checkout project