Структура для нескольких проектов JSF с общим кодом - PullRequest
34 голосов
/ 30 ноября 2011

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

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

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

1 Ответ

59 голосов
/ 30 ноября 2011

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

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

Вот и все.

См. Также:

...