WTP tutorial: Tomcat en eclipse i.s.m. Maven

An article, posted almost 16 years ago filed in tutorial, java, jsf, development, software, eclipse, tomcat, notforhomepage, maven & wtp.

 Tijd voor eens een ander artikel dan de eerdere veelal conceptuele artikelen. Dit keer een meer technische tutorial met betrekking tot het inrichten van de werkomgeving. Bij The Bean Machine wordt primair ontwikkeld in Java (en ‘dus’ de websites geserveerd op een Tomcat server). Verder we werken hier allen met Eclipse en gebruiken we voor het samenrapen van de afhankelijkheden, het uitvoeren van automatische testen, e.d., Maven. Als je deze tools kent, ben je misschien gewend geraakt aan de hoeveelheid command line operaties vereist om dit goed te laten werken. Mocht je daar dan nog niet verknocht aan zijn dan is deze tutorial mogelijk wat voor jou.

Eerst het nut van wat van de zaken die wij in onze werkomgeving gebruiken:

Dus wat kan WTP (Web Tools Platform) hier aan toevoegen? WTP staat ons toe om met een webserver te werken vanuit Eclipse. Dus geen herstarten, deployen e.d. via localhost/manager/html in geval van Tomcat. En het beste: er is zelfs geen redeploy nodig om kleine aanpassingen te testen. Gewijzigde bestanden worden op de achtergrond bijgewerkt! Kleine aanpassing in de JSPX template? Ctrl+S en direct checken in de browser. Voor gebruikers van scripting talen de normaalste zaak van de wereld, bij Java webdevelopment is het stomgenoeg gebruikelijk om een redeploy te doen (omdat er eerst gecompiled dient te worden). Daarnaast breekt het niet met b.v. SVN … en hoeft het ook niet te breken met Maven… de reden voor deze tutorial.

Ingrediënten

Zorg ervoor dat je de volgende plugins hebt geïnstalleerd in eclipse (voor het schrijven van deze tutorial is de Ganymede versie van Eclipse gebruikt):

Verder dien je op je systeem Maven te hebben geïnstalleerd (het zit standaard in de meeste, als niet alle, Linux repositories).

Het recept

Dus hoe doen we WTP samen met maven? We gaan er voor het gemak dus van uit dat we al een project hebben dat in Maven zit (maar nog niet geïmporteerd is in Eclipse). Om dit maven-project voor te bereiden op gebruik met eclipse voeren we het volgende commando uit: mvn eclipse:eclipse -Dwtpversion=1.5 (2.0 mag ook indien je de laatste versie hebt)

Nu kun je het bestand importeren in Eclipse. Wanneer je alle plugins correct hebt geinstalleerd bestaat er een import genaamd ‘Maven Project’ (File > Import … General > Maven Projects). Klik op ‘Next’ en navigeer (‘Browse…’) naar de map die het maven configuratie bestand (pom.xml) bevat. Selecteer de pom, en klik op ‘Finish’. Na enige tijd zal het project in je Eclipse zitten, zonder foutmeldingen.

Nu dienen we het project toe te voegen aan een server. Navigeer naar Window > Show view > Servers. Maak in deze view een nieuwe server aan door met de rechtermuisknop in het lege veld te klikken en te navigeren naar New > Server. Selecteer Tomcat v6.0 Server. Wanneer Eclipse hiervan nog geen weet heeft, kun je Tomcat installeren of opzoeken door op ‘Add’ te klikken achter de ‘Server Runtime environment’-dropdown. Je kunt hier verwijzen naar een reeds bestaande lokale installatie van Tomcat, of Eclipse de laatste versie laten installeren binnen zijn eigen omgeving. Indien gereed, klik op finish. In het ‘New Server’ dialoog kun nu op ‘Next’ drukken zodat we arriveren in een scherm waar je projecten kunt toekennen aan de server. Als het goed is staat het eerder geimporteerde project hier ook tussen. De procedure is overigens hetzelfde als bij het toevoegen van een nieuw project aan een bestaande server (lees dus gewoon verder in de volgende paragraaf ;) )

Een project toevoegen aan een server kan pas nadat je een server hebt aangemaakt. Naderhand toevoegen van een project doe je door met de rechtermuisknop op de server te klikken binnen de Servers view en op ‘Add and remove projects…’ te klikken. Selecteer een project in de linker helft van het venster, en klik op ‘Add’. Door op Finish te drukken wordt de toevoeging definitief.

De server start je door de server te selecteren in de Servers-view en op de groene ‘Play’ knop te drukken (mocht je geïnteresseerd zijn in debuggen, dan kun je ook op het insectje klikken). Wanneer je nu alles standaard hebt geconfigureerd kun je naar de localhost (poort: 8080) browsen:

http://localhost:8080/

Zien doe je nu waarschijnlijk weinig (maar als het goed is krijg je geen foutmelding in de trant van ‘Server not found’). Het enige wat nu rest is kijken naar wat de context root is van je project. Deze kun je achterhalen, en evt. wijzigen, in de project properties. Door met de rechtermuisknop op het project in de ‘Project Explorer’ (binnen Eclipse) te klikken en te navigeren naar ‘Properties’ (Alt+Enter op het project werkt natuurlijk ook) bereik je deze. Navigeer hierbinnen naar ‘Web Project Settings’ en kijk wat de waarde is voor de Context Root. Deze waarde dien je achter de url te typen van Tomcat, b.v.:

http://localhost:8080/contextroot/

Resultaat

Je zult nu de website kunnen zien.

De ‘kracht’ van WTP wordt zichtbaar wanneer je nu wijzigingen gaat aanbrengen in het project. Pas bijvoorbeeld een .jspx pagina aan, en je zult zien dat deze in luttele secondes wordt aangepast op de server. Herlaad de pagina in de browser, en je kunt het resultaat zien. Voor aanpassingen aan .java bestanden zal de update iets langer op zich wachten, en het kan zijn dat het niet altijd werkt… in dat geval dien je de server te herstarten. Gelukkig kan dit nu zonder gerotzooi in de command line. Druk gewoon opnieuw op het play icoon.

Probleem oplossing

Mocht je in de console foutmeldingen krijgen, probeer dan het volgende:

Klap het project open in de project explorer, en klap tevens de deployment descriptor open. Herlaad alles, door op F5 te drukken. No-go? Probeer dan het updaten van de dependencies te forceren door in het context menu (het menu dat verschijnt na rechter muisklik) ‘Maven > Update dependencies’ en/of ‘Maven > Update snapshots’ te kiezen. Mocht dat nog niet helpen, probeer dan ook om de configuratie te herladen (‘Maven > Update Project Configuration’).

Kleine bonus: maak je gebruik van profielen om te deployen, voer je b.v. regelmatig mvn clean:install -P develop uit, dan moet je deze keuze voor een bepaald profiel ook ergens tot uitdrukking brengen. Dit kan in settings.xml in je maven directory (onder *nix: ~/.m2)

Vragen en/of opmerkingen?

We horen graag van je… mochten er onduidelijkheden zijn dan zullen we deze zo snel mogelijk proberen weg te nemen.                      

Deze post verscheen eerder op The Bean Blog

Op de hoogte blijven?

Maandelijks maak ik een selectie artikelen en zorg ik voor wat extra context bij de meer technische stukken. Schrijf je hieronder in:

Mailfrequentie = 1x per maand. Je privacy wordt serieus genomen: de mailinglijst bestaat alleen op onze servers.