Структура для нескольких проектов 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>
Это все.