JSF によって提供される機能への小さな追加 (追加の ResourceHandlers など) を含むライブラリがあります。
(パッケージからの) JSF クラスを使用するjavax.faces.*
ため、当然、JSF API に依存する必要があります。ライブラリは Maven プロジェクトとしてパッケージ化されており、com.sun.faces:jsf-api
.
これは、コンパイルや、Mojarra を使用するプロジェクトでの使用に適しています。ただし、MyFaces を使用する JSF アプリケーションにライブラリを含めると、「Exception: could not find Factory: javax.faces.context.FacesContextFactory 」で説明されているように、エラーが発生します。
どうやら、アプリケーションが MyFaces を使用する場合、それはjsf-api.jar または jsf-impl.jarではなく、 myfaces-api.jarおよびmyfaces-impl.jar (または対応する Maven deps) を使用する必要があります。
これは私を少し混乱させます。
- Mojarra と MyFaces が異なる API jar を使用するのはなぜですか? どちらも同じ API (JSF) を実装しているので、同じ API jar を使用するべきではありませんか?
- 「api」と「impl」のjarを別々にすることの要点は、「impl」部分だけを切り替えて別の実装を使用する必要があるということだと思いました。私は何かを誤解しましたか?
- より具体的には、JSF API のみに依存する必要があるライブラリの適切な Maven 依存関係は何ですか? 現在、私たちは jsf-api に依存しており、MyFaces を使用するプロジェクトは、
<exclusions>
jsf-api を破棄して myfaces-api を含めるために使用する必要があります。それはうまくいきますが、確かにもっと良い方法がありますか?