具有共享代码的多个JSF项目的结构

时间:2011-11-30 02:38:35

标签: eclipse jsf structure projects

我有两个共享大量代码的JSF项目 - java类,xhtml文件,标记库,css和javascript文件等。我的开发环境/平台主要包括Eclipse,Ant,Perforce和Tomcat。

是否有人找到了创建和整理共享代码的方法,以便公共代码可以保留在一组文件夹中?

Eclipse可以轻松地为java源添加外部文件夹,但不能满足其他文件类型。我很欣赏任何想法。

1 个答案:

答案 0 :(得分:59)

在Eclipse中创建一个新的“Java项目”。将其作为另一个项目添加到主动态Web项目的 Deployment Assembly 属性中。这样,它将自动最终作为Web项目构建的/WEB-INF/lib中的JAR。从较新的Eclipse版本开始,您还可以将项目创建为“Web Fragment Project”。这样,部署程序集步骤将自动完成。

将所有这些共享的JSF2 / Facelets资源文件放在Java项目的/META-INF/resources文件夹中。只需将其视为主Web项目的WebContent/resources即可。 Tagfiles可以保存在自己的/META-INF/tags文件夹中。

E.g。

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的{{ 1}}文件(它甚至可以保持为空)。

/META-INF/faces-config.xml

就是这样。

另见: