web-dev-qa-db-ja.com

共有コードを持つ複数のJSFプロジェクトの構造

私は多くのコードを共有する2つのJSFプロジェクトを持っています-Javaクラス、xhtmlファイル、タグライブラリ、cssおよびjavascriptファイルなど)。私の開発環境/プラットフォームは主にEclipse、Ant、PerforceおよびTomcat。

誰かが共有コードを作成および整理して、共通コードが1つのフォルダーセット内に留まる方法を見つけましたか?

Eclipseを使用すると、Javaソースの外部フォルダーを簡単に追加できますが、他のファイルタイプには不十分です。アイデアがあればよろしくお願いします。

35
Heizenberg

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>

それで全部です。

以下も参照してください。

63
BalusC