Biblioteca de componentes personalizados JSF

Que tal a todos,

Resulta que quiero realizar una biblioteca de componentes, tal como Primefaces o IceFaces, pero a mi medida, ya indagué el cómo realizar componentes personalizados, de hecho ya tengo unas clases de ejemplo, sin embargo al seguir instrucciones de cómo registrar automáticamente la biblioteca en cualquier proyecto es dónde me pierdo, ya que al correr el proyecto el servidor dice que no encuentra el objeto.

Ahora, no se si a alguien le haya pasado algo similar que pudiera ayudarme, lo que necesito es crear un proyecto de tipo Biblioteca de clases y ésta biblioteca añadirlo a un proyecto para que pueda ser usada.

De antemano agradezco su atención.

Mi ambiente es el siguiente:

Netbeans 7.3
JDK 7
JSF 2.1
Tomcat 7
Win 7 64 bits

El error que aparece

Error de expresión: objeto con nombre: com.dynamic.jsf.component.HTMLBreadcrumbs.HtmlBreadcrumbs no encontrado.

javax.faces.FacesException: Error de expresión: objeto con nombre: com.dynamic.jsf.component.HTMLBreadcrumbs.HtmlBreadcrumbs no encontrado.
        at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1911)
        at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1165)
        at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.createComponent(ComponentTagHandlerDelegateImpl.java:525)
        at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:169)
        at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
        at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
...

Mi faces-config.xml

<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 <a href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
" title="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
</a>    version="2.0">
   
    <name>customcomponent</name>
   
    <component>
    ****<component-type>com.dynamic.jsf.component.HTMLBreadcrumbs.HTMLBreadcrumbs</component-type>
    ****<component-class>com.dynamic.jsf.component.HTMLBreadcrumbs.HTMLBreadcrumbs</component-class>
    </component>
   
    <render-kit>
        <renderer>    
            <component-family>com.dynamic.jsf.component</component-family>
            <renderer-type>com.dynamic.jsf.component.HTMLBreadcrumbs.HTMLBreadcrumbsRenderer</renderer-type>
            <renderer-class>com.dynamic.jsf.component.HTMLBreadcrumbs.HTMLBreadcrumbsRenderer</renderer-class>  
        </renderer>
    </render-kit>
   
   
</faces-config>

Mi taglib

<facelet-taglib 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 <a href="http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
" title="http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
">http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
</a>    version="2.0">
    <namespace>http://www.luismorales.com/jsf/components/</namespace>
   
    <tag>
        <tag-name>dynBreadcrumbs</tag-name>
        <description><![CDATA[dynBreadcrumbs description.]]></description>
        <attribute>
            <description>URL Request</description>
            <name>urlRequest</name>
            <required>true</required>
            <type>java.lang.String</type>
        </attribute>
        <component>
            <component-type>com.dynamic.jsf.component.HTMLBreadcrumbs.HtmlBreadcrumbs</component-type>
            <renderer-type>com.dynamic.jsf.component.HTMLBreadcrumbs.HtmlBreadcrumbsRenderer</renderer-type>
        </component>
    </tag>
     
     
</facelet-taglib>

La clase componente

public class HTMLBreadcrumbs extends UIComponentBase{
   
    public static final String COMPONENT_TYPE = "com.dynamic.jsf.component.HTMLBreadcrumbs";
    public static final String COMPONENT_FAMILY = "com.dynamic.jsf.component";
   
    private String urlRequest = "";

    public String getUrlRequest() {
        final ValueExpression valueExpression = getValueExpression("urlRequest");
        if (valueExpression != null) {
            final String elValue = (String) valueExpression.getValue(
                getFacesContext().getELContext());
            return elValue;
        }
        return urlRequest;
    }

    public void setUrlRequest(String urlRequest) {
        this.urlRequest = urlRequest;
    }

    @Override
    public String getFamily() {
        return "com.dynamic.jsf.component";
    }

    @Override
    public String getRendererType() {
        return "com.dynamic.jsf.component.HTMLBreadcrumbs";
    }    
   
}

El resultado que busco es algo como ésto:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:dyn="http://www.luismorales.com/jsf/components/"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
       
El siguiente elemento es un componente personalizado:

        <dyn:dynBreadcrumbs urlRequest="http://www.luismorales.com/jsf/components/" />
       
    </h:body>
</html>

Pero que la biblioteca sea incluida como un jar cualquiera.

--------------------------------------------------------------------------------------------------------

Como punto adicional he leído acerca de los composite components sin embargo pienso meterle lógica a los componentes que voy a realizar, cosa que no es posible con los composite components.

Además de que quiero mis propios tags sin utilizar el namespace "xmlns:composite='http://java.sun.com/jsf/composite'"

No se si me expliqué

Saludos