Upload
funthomas424242
View
952
Download
0
Embed Size (px)
DESCRIPTION
Stand 2006
Citation preview
Maven Einsteiger Workshop
Platform Independent User Group
Nürnberg 2006
AutorThomas Schubert
Rechtlich geschützt durch die GNU Free Documentation License
Ü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)
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
Anlegen der Verzeichnisstruktur
Folgende Kommandos in einer Shell ausführen
mkdir workshopmavencd workshopmavenmkdir hallowelt-javacd hallowelt-javamkdir srcmkdir src\mainmkdir src\main\java
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>
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");}}
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
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); }}
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
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] ----------------------------------------------------------------------------
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
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, ...?
Verteilen der Anwendung
➲ Prinzipiell werden Anwendungen in Repositories verteilt
➲ Eine Verteilung in das lokale Repository wird über folgendes Kommando ausgelöst:
mvn install
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
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
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>
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
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);}}
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 %>
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>
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
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/
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
Enterprise Anwendung (ear)
Zusammenfassung
➲ Einführung in Maven➲ Übersicht➲ Langfristiges Ziel➲ Jetzige Situation➲ Entwicklung bis jetzt➲ Mögliche Alternativen➲ Empfehlung
Quellennachweis
LiteraturverzeichnisMaven2001-2005: Project, Apache Maven, Maven Documentation, 2001 - 2005
Vielen Dank
für
Ihr Interesse