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

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

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

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

1 ответ

Решение

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

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

Это все.

Смотрите также:

Другие вопросы по тегам