Из сводки документации библиотеки тегов JSF composite
(выделено мной):
Создание составного компонента
Реализация по умолчанию должна поддерживать авторинг. Составной компонент объявляется путем создания файла Facelets2 внутри библиотеки ресурсов. ( См. Раздел JSF.2.6 документа спецификации для получения дополнительной информации о библиотеках ресурсов. ) Составной компонент должен находиться в библиотеке ресурсов. Невозможно создать составной компонент без помещения его в библиотеку ресурсов.
Из раздела 2.6 спецификация JSF :
2.6.1.2 Упаковка ресурсов в путь к классам
Для реализации по умолчанию ресурсы, упакованные в classpath, должны находиться в
Имя записи JAR:
META-INF/resources/<resourceIdentifier>
Ресурсы, упакованные в путь к классам, должны быть доступны с использованием getResource*()
методов ClassLoader
, полученных путем вызова метода getContextClassLoader()
текущего Thread
.
Кстати, все составные компоненты должны быть в папке /META-INF/resources
JAR. Он должен обрабатываться так же, как /WEB-INF/resources
в обычном WAR (поэтому вам все еще нужна дополнительная подпапка для представления основного пространства имен составного компонента).
В случае, если JAR также содержит классы с аннотациями JSF, такими как @ManagedBean
и т. Д., Тогда JAR также должен иметь файл /META-INF/faces-config.xml
, совместимый с JSF 2.0, для запуска сканера аннотаций JSF для сканирования всего JAR для классов, реализующих любые аннотации JSF.
Что касается части Netbeans / Maven, извините, я понятия не имею, поскольку я ими не пользуюсь.