Als Beispiel: ein paar nicht ganz so sinnvolle Tags
Als Beispiel sollen ein paar Tags dienen, die man vielleicht nicht so wirklich praktisch gebrauchen kann. Da sie jedoch sehr einfach gehalten sind, kann man sich damit auch noch mal die Grundlagen der JSP Tags anschauen.
Wie funktioniert das genau?
TLD Datei als Resource
Damit die TLD-Datei als Resource auch in das JAR mit eingefügt wird, muss sie im Verzeichnis src/main/resources/META-INF/tags abgelegt werden.
Der Pfad src/main/resources sorgt dabei in Maven dafür, dass die Datei auch wirklich in das JAR mit reinkommt. Würde man sie in die Sourcen packen, würde sie nicht mit eingefügt werden.
Durch das Ablegen unterhalb von META-INF/tags wird die TLD vom Webserver automatisch gefunden.
Die eigentliche TLD-Datei ist dabei nichts besonderes, es ist eine ganz normale TLD-Datei, wie man sie auch in anderen Projekten findet. Wichtig ist bloss, dass die dort angegebene URI eindeutig ist, damit es keine Überschneidungen zu anderen Taglibs gibt.
Dependency in der pom.xml
Damit man überhaupt ein JSP Tag compilieren kann, ist eine Abhängigkeit zur JSP API notwendig. Diese bindet man am besten mit folgender Dependency ein:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
Wichtig ist dabei die Angabe provided für den Scope. Wenn man dort keine Angabe machen würde, bekäme man ein Problem in dem Web-Projekt, das später die JSP Taglib einbindet, denn in dem Fall würde das JAR der JSP API in die Applikation mit einbezogen (d.h. mit deployed) werden, und dies würde sich mit der JSP API des Webservers überschneiden.
Was sonst noch?
Im wesentlichen war es das schon. In einem Maven Webprojekt kann eine solche JSP Taglib einfach als Abhängigkeit eingefügt werden. In "normalen" Webprojekten einfach das entstehende JAR nach WEB-INF/lib kopieren und als JAR-Abhängigkeit einbinden.
Zur Verwendung der Tags referenziert man dann die URI aus der TLD, wobei einem die meisten IDEs über die Autovervollständigung helfen.