Структура для нескольких проектов JSF с общим кодом

У меня есть два проекта JSF, в которых есть много классов кода java, xhtml файлов, библиотек тегов, css и javascript файлов и т.д. Моя среда/платформа Dev состоит в основном из Eclipse, Ant, Perforce и Tomcat.

Кто-нибудь нашел способ создать и организовать общий код, чтобы общий код мог оставаться в пределах одного набора папок?

Eclipse упрощает добавление внешних папок для java-источников, но не подходит для других типов файлов. Я был бы признателен за любые идеи.

Ответ 1

Создайте новый "Java Project" в Eclipse. Добавьте его в качестве другого проекта в свойство Assembly развертывания основного динамического веб-проекта. Таким образом, он автоматически закончится как JAR в /WEB-INF/lib сборки веб-проекта. Начиная с более новых версий Eclipse, вы также можете создать проект как "Проект веб-фрагментов". Таким образом, шаг сборки развертывания будет выполнен автоматически.

Поместите все эти общие файлы ресурсов JSF2/Facelets в папку /META-INF/resources проекта Java. Просто рассматривайте его как WebContent/resources основного веб-проекта. Tagfiles можно просто сохранить в своей папке /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 и судить в этом проекте, также создайте файл /META-INF/faces-config.xml, совместимый с JSF2 (он может даже оставаться пустым).

<?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>

Что все.

См. также: