在 Eclipse 中创建一个新的“Java 项目”。将其作为另一个项目添加到主动态 Web 项目的 Deployment Assembly 属性中。这样,它将自动以 JAR 的形式出现在 Web 项目构建的/WEB-INF/lib 中。由于较新的 Eclipse 版本,您还可以将项目创建为“Web Fragment Project”。这样部署组装步骤将自动完成。
将所有这些共享资源文件放在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
| |-- beans.xml
| |-- 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" />
...
如果您使用 Maven,/META-INF 文件夹必须放在 src/main/resources 中,因此不是 src/main/java!
如果您还想触发 JSF 注释扫描器,以便您可以将 @FacesValidator、@FacesConverter、@FacesComponent、@FacesRenderer 和 consorts 也放入该项目中,那么创建一个 /META-INF/faces-config.xml 文件为好吧。下面是一个兼容 JSF 2.3 的:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd"
version="2.3">
<!-- Put shared faces-config.xml config here. -->
</faces-config>
/META-INF/web-fragment.xml 是 JAR 被 servletcontainer 识别为“Web 片段项目”所必需的,并且应该已经由您的 IDE 生成,但为了完整起见,这里是 Servlet 4.0 的样子兼容的:
<?xml version="1.0" encoding="utf-8"?>
<web-fragment
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-fragment_4_0.xsd"
version="4.0">
<!-- Put shared web.xml config here. -->
</web-fragment>
就是这样。
另见: