私は多くのコードを共有する2つのJSFプロジェクトを持っています-Javaクラス、xhtmlファイル、タグライブラリ、cssおよびjavascriptファイルなど)。私の開発環境/プラットフォームは主にEclipse、Ant、PerforceおよびTomcat。
誰かが共有コードを作成および整理して、共通コードが1つのフォルダーセット内に留まる方法を見つけましたか?
Eclipseを使用すると、Javaソースの外部フォルダーを簡単に追加できますが、他のファイルタイプには不十分です。アイデアがあればよろしくお願いします。
Eclipseで新しい「Javaプロジェクト」を作成します。これを別のプロジェクトとして、メインの動的WebプロジェクトのDeployment Assemblyプロパティに追加します。このようにして、Webプロジェクトのビルドの/WEB-INF/lib
にJARとして自動的に配置されます。新しいEclipseバージョンなので、プロジェクトを「Webフラグメントプロジェクト」として作成することもできます。これにより、Deployment Assemblyステップが自動的に実行されます。
すべての共有JSF2/FaceletsリソースファイルをJavaプロジェクトの/META-INF/resources
フォルダに配置します。メインWebプロジェクトのWebContent/resources
のように扱います。タグファイルはそのまま保持できます。独自の/META-INF/tags
フォルダー内。
例えば。
CommonWebProject
|-- META-INF
| |-- resources
| | `-- common
| | |-- css
| | | `-- some.css
| | |-- js
| | | `-- some.js
| | |-- images
| | | `-- some.png
| | |-- components
| | | `-- somecomposite.xhtml
| | `-- sometemplate.xhtml
| |-- tags
| | `-- sometag.xhtml
| |-- faces-config.xml
| |-- some.taglib.xml
| |-- web-fragment.xml
| `-- MANIFEST.MF
:
と
<h:outputStylesheet library="common" name="css/some.css" />
<h:outputScript library="common" name="js/some.js" />
<h:graphicImage library="common" name="images/some.png" />
<common:somecomposite />
<common:sometag />
<ui:include src="/common/sometemplate.xhtml" />
...
JSF2アノテーションスキャナーもトリガーして、@ManagedBean
、@FacesValidator
、@FacesConverter
およびconsortsをそのプロジェクトに配置できるようにする場合は、JSF2互換の/META-INF/faces-config.xml
を作成します。ファイルも同様です(空のままにすることもできます)。
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
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-facesconfig_2_0.xsd"
version="2.0">
</faces-config>
それで全部です。