Download ppt - Einsteiger Workshop

Transcript
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