27
Maven Einsteiger Workshop Platform Independent User Group Nürnberg 2006 Autor Thomas Schubert Rechtlich geschützt durch die GNU Free Documentation License

Einsteiger Workshop

Embed Size (px)

DESCRIPTION

Stand 2006

Citation preview

Page 1: Einsteiger Workshop

Maven Einsteiger Workshop

Platform Independent User Group

Nürnberg 2006

AutorThomas Schubert

Rechtlich geschützt durch die GNU Free Documentation License

Page 2: Einsteiger Workshop

Übersicht

➲ Teil I Hallo Welt als Standalone Java Anwendung

➲ Teil II Hallo Welt als Web Anwendung

➲ Teil III Hallo Welt als EJB Anwendung

➲ Teil IV Hallo Welt als Enterprise Anwendung (ear)

Page 3: Einsteiger Workshop

Standalone Java Anwendung

➲ Anlegen der Verzeichnisstruktur➲ Projektbeschreibung erstellen (pom.xml)➲ Erstellen der Quellen➲ Kompilieren der Anwendung➲ Erstellen von Testfällen➲ Testen der Anwendung➲ Projekterstellung über Architekturvorlagen➲ Verpacken der Anwendung als Archiv➲ Verteilung der Anwendung ins Repository➲ Erstellen einer HTML Site

Page 4: Einsteiger Workshop

Anlegen der Verzeichnisstruktur

Folgende Kommandos in einer Shell ausführen

mkdir workshopmavencd workshopmavenmkdir hallowelt-javacd hallowelt-javamkdir srcmkdir src\mainmkdir src\main\java

Page 5: Einsteiger Workshop

Projektbeschreibung erstellen

Datei pom.xml im Projektverzeichnis anlegen<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion> <groupId>workshopmaven</groupId> <artifactId>hallowelt-java</artifactId> <!--packaging>jar</packaging--> <version>1.0-SNAPSHOT</version> <name>Hallo Welt - Java</name> <!--url>http://thomas_michel.info/projects/hallowelt-java</url--> <inceptionYear>2006</inceptionYear> <description>Standalone Java Anwendung, welche Hallo Welt ausschreibt. </description>

</project>

Page 6: Einsteiger Workshop

Java Quellen erstellen

Verzeichnis für Package erstellen:mkdir src\main\java\workshopmaven

Datei HalloWelt.java im Package erstellenpackage workshopmaven;

public class HalloWelt{

public static void main( final String [] args ){System.out.println("Hallo Welt");}}

Page 7: Einsteiger Workshop

Kompilieren der Anwendung

➲ Im Projektverzeichnis mvn clean compile ausführen

➲ Als Ergebnis entsteht ein Verzeichnis target mit Unterverzeichnis classes in welchem das Package mit dem Kompilat abgelegt ist

Page 8: Einsteiger Workshop

Erstellen von Testfällen

➲ Verzeichnisse anlegenmkdir src\testmkdir src\test\javamkdir src\test\java\workshopmaven

➲ Klasse HalloWeltTest.java darin erstellenpackage workshopmaven;

import junit.framework.TestCase;

public class HalloWeltTest extends TestCase {

public void testMain() {final HalloWelt testClass = null; testClass.main(null); }}

Page 9: Einsteiger Workshop

Junit Abhängigkeit definieren

➲ In der pom.xml wird folgender Abschnitt nach der </description> eingefügt

<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>

➲ Damit wird ausgedrückt, dass die Junit Bibliothek (jar) benötigt wird

Page 10: Einsteiger Workshop

Test der Anwendung

➲ Der Test erfolgt über mvn clean test

➲ Als Ergebnis wird eine ähnliche Ausschrift gezeigt:

C:\workshopmaven\hallowelt-java>mvn clean test:------------------------------------------------------- T E S T S-------------------------------------------------------Hallo Welt[surefire] Running workshopmaven.HalloWeltTest[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0,015 sec

Results :[surefire] Tests run: 1, Failures: 0, Errors: 0

[INFO] ----------------------------------------------------------------------------[INFO] BUILD SUCCESSFUL[INFO] ----------------------------------------------------------------------------[INFO] Total time: 6 seconds[INFO] Finished at: Fri Jan 06 22:51:11 CET 2006[INFO] Final Memory: 3M/8M[INFO] ----------------------------------------------------------------------------

Page 11: Einsteiger Workshop

Projekterstellung über Vorlagen➲ Die bisherigen Schritte können alle durch die

Nutzung von Architekturtypen automatisiert werden, z.B. über das Kommando:

mvn archetype:create -DgroupId=workshopmaven -DartifactId=hallowelt-java -DartifactVersion=1.0-SNAPSHOT

➲ Die allgemeine Syntax lautet:mvn archetype:create

-DarchetypeGroupId=maven-archetype-group -DarchetypeArtifactId=maven-archetype-name -DarchetypeVersion=maven-archetype-version

-DgroupId=com.mycompany.app -DartifactId=my-app

➲ Je nach Architekturtyp sind verschiedene Parameter über die Option -D festzulegen

Page 12: Einsteiger Workshop

Verpacken der Anwendung

➲ Das Verpacken geschieht über Eingabe vonmvn package

➲ Das erstellte Archiv richtet sich nach dem in der pom.xml angegebenen Wert für <packaging>

➲ Mögliche Archive sind jar, war, ear, ...?

Page 13: Einsteiger Workshop

Verteilen der Anwendung

➲ Prinzipiell werden Anwendungen in Repositories verteilt

➲ Eine Verteilung in das lokale Repository wird über folgendes Kommando ausgelöst:

mvn install

Page 14: Einsteiger Workshop

Erstellen einer HTML Site

➲ Aufruf von: mvn clean site

➲ Als Ergebnis wird in target ein Unterverzeichnis site erstellt, welches eine schlichte Projekt Website enthält

Page 15: Einsteiger Workshop

Lizenz hinzufügen➲ Verzeichnis src\main\resources erstellenmkdir src\main\resources

➲ Dort wird eine Datei mit dem Wortlaut der Lizenz abgelegt, z.B.

➲ LGPL2.txtHier sollte der Wortlaut der LGPL stehen!

➲ pom.xml nach </description> erweitern: <licenses> <license> <name>GNU LGPL Version 2</name> <url>src\main\resources\LGPL2.txt</url> <distribution>manual</distribution> <comments>Its free to modify, redistribute and derive other

programs.</comments> </license> </licenses>

➲ Zum Test erneut mvn clean site ausführen

Page 16: Einsteiger Workshop

Weitere Lizenz hinzufügen➲ Erstellen einer weiteren Lizenzdatei

(FDL.txt) unter resources, Inhalt:Hier sollte der Wortlaut der GNU Free Documentation License stehen!

➲ Den Abschnitt licenses in pom.xml ersetzen:<licenses> <license> <name>GNU LGPL Version 2</name> <url>src\main\resources\LGPL2.txt</url> <distribution>manual</distribution> <comments>Its free to modify, redistribute and derive

other programs.</comments> </license> <license> <name>GNU Free Documentation License</name> <url>src\main\resources\FDL.txt</url> <distribution>manual</distribution> <comments>Its free to modify, redistribute and derive

other stuff.</comments> </license> </licenses>

Page 17: Einsteiger Workshop

Web Anwendung

➲ Erstellen des Web Projektes unter dem workshopmaven Verzeichnis

mvn archetype:create -DgroupId=workshopmaven -DartifactId=hallowelt-web -DarchetypeArtifactId=maven-archetype-webapp

➲ Webanwendung konfektionieren

mvn package

➲ Unter target ist das fertige War Archiv abgelegt, testbar auf einem J2EE Appserver

Page 18: Einsteiger Workshop

Erweiterung der Webanwendung➲ Anlegen Verzeichnisstrukturmkdir src\main\javamkdir src\main\java\workshopmaven

➲ Erstellen eines Servlets HalloWelt.javapackage workshopmaven;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

public class HalloWelt extends HttpServlet {public void service(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {doGet(request, response);}public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {request.setAttribute("text", "Hallo Welt");request.getRequestDispatcher("/index.jsp").forward(request,response);}}

Page 19: Einsteiger Workshop

Anpassung der JSP Seite

➲ Unter src/main/webapp wird In der index.jsp der Text zwischen den <h2> Tags ersetzt durch:

<% final String text = (String) request.getAttribute("text");%>

<%= text %>

Page 20: Einsteiger Workshop

Ergänzung der web.xml

➲ Unter src/main/webapp/WEB-INF wird in der web.xml der web-app Abschnitt wie folgt ersetzt:

<web-app> <display-name>Hallo Welt Web Anwendung</display-name>

<servlet> <servlet-name>MainServlet</servlet-name> <servlet-class>workshopmaven.HalloWelt</servlet-class> </servlet> <servlet-mapping> <servlet-name>MainServlet</servlet-name> <url-pattern>/controller/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/controller/MainServlet</welcome-file> </welcome-file-list>

</web-app>

Page 21: Einsteiger Workshop

J2EE Abhängigkeit definieren

➲ In der pom.xml wird der Abschnitt <dependencies> erweitert

<dependency> <groupId>javax.j2ee</groupId> <artifactId>j2ee</artifactId> <version>1.4</version> </dependency>

➲ Damit wird ausgedrückt, dass die J2EE Bibliothek (jar) benötigt wird

Page 22: Einsteiger Workshop

Verteilung und Test

➲ Mit mvn package wird die Anwendung erstellt

➲ Über ein manuelles Deployment auf einen J2EE Server kann die Anwendung getestet werden

➲ Der Aufruf für BEA Weblogic lautet:

http://localhost:7001/hallowelt-web/

Page 23: Einsteiger Workshop

EJB Anwendung

➲ Erstellen des EJB Projektes unter dem workshopmaven Verzeichnis

mvn archetype:create -DgroupId=workshopmaven -DartifactId=hallowelt-ejb -DarchetypeArtifactId=maven-archetype-ejb

➲ EJB Anwendung konfektionieren

mvn package

➲ Unter target ist das fertige JAR Archiv abgelegt, testbar auf einem J2EE Appserver

Page 24: Einsteiger Workshop

Enterprise Anwendung (ear)

Page 25: Einsteiger Workshop

Zusammenfassung

➲ Einführung in Maven➲ Übersicht➲ Langfristiges Ziel➲ Jetzige Situation➲ Entwicklung bis jetzt➲ Mögliche Alternativen➲ Empfehlung

Page 26: Einsteiger Workshop

Quellennachweis

LiteraturverzeichnisMaven2001-2005: Project, Apache Maven, Maven Documentation, 2001 - 2005

Page 27: Einsteiger Workshop

Vielen Dank

für

Ihr Interesse