A JSF Library is simply a set of jars that will be put on the classpath and optionally deployed to the WEB-INF/lib directory at publish time using the J2EE Module Dependencies.
As of the WTP 2.0 release, a JSF Library is created as a classpath container and is managed just like any classpath container library.Why do some libraries have the "implementation" flag?
A library marked as a JSF implementation differentiates it from a normal set of jars that make up a library. This flag is meant as an on-your-honor marking that this set of jars meets the JSF specification for an implementation. The JSF tooling requires a Faces Servlet implementation for compilation and "Run on Server" feature of a JSF JSP page. In cases where the server runtime adapter supplies the JSF implementation, it is possible to specify that the server-supplied implementation be used. A library marked as an implementation will appear with [implementation] in the label. There can be more than one implementation in the registry. One of them can be marked as the default so that it will be chosen automatically during JSF Facet installation allowing JSF Facet Finish to be enabled.
An adopter of the WTP JSF Tooling may create a plugin that extends org.eclipse.jst.jsf.core.jsflibraries
which would allow a developer to procedurally create a JSF Library. This, in theory, would simplify project configuration and could also enable the adopter to provide other tool extensions to improve the development experience.
Plugin-provided libraries are not editable or deletable by an end user.
It will be necessary to edit the JSF Library and fix the references before the library will be useable.
When a library is referenced by a project, either at JSF Facet install time, or at a later time by adding it using projects Java Build Path property page, the library is placed on the project's build classpath as a classpath container. In order for the jars in the library to be deployed with the application, the library must also be selected in the J2EE Module Dependencies page. This handles placing each jar in the library into the WEB-INF/lib directory of the deployed application.