tvorba webových aplikací s apache maven

24
Tvorba webových aplikací s Apache Maven Využití Mavenu pro efektivní vývoj Jety Pavel Jetenský 29.10.2009

Upload: haven

Post on 12-Jan-2016

75 views

Category:

Documents


0 download

DESCRIPTION

Tvorba webových aplikací s Apache Maven. Jety Pavel Jetenský 29.10.2009. Využití Mavenu pro efektivní vývoj. Úkoly při vývoji webu. Založení nové webové aplikace Vývoj webové aplikace Nasazení ( deploy ). Maven Archet ype Plugin Úkol 1.1 - založte si webovku. mvn archetype:create - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tvorba webových aplikací s Apache Maven

Tvorba webových aplikacís Apache Maven

Využití Mavenu pro efektivní vývoj

Jety Pavel Jetenský

29.10.2009

Page 2: Tvorba webových aplikací s Apache Maven

1. Založení nové webové aplikace

2. Vývoj webové aplikace

3. Nasazení (deploy)

Úkoly při vývoji webu

Page 3: Tvorba webových aplikací s Apache Maven

Maven Archetype PluginÚkol 1.1 - založte si webovku

mvn archetype:create-DgroupId=net.jetensky.webandmaven -DartifactId=TestWebApp-DarchetypeArtifactId=maven-archetype-webapp

Page 4: Tvorba webových aplikací s Apache Maven

Úkol 1.2 - spusťte aplikaci v tomcatu

mvn package copy target/TestWebApp.war $Tomcat/webapps $Tomcat/bin/startup.bat http://localhost:8080/TestWebApp

Page 5: Tvorba webových aplikací s Apache Maven

Úkol 1.3 - na index.jsp zobrazte aktuální čas

IndexControllerServlet.java - do requestu dá "time" web.xml

registrace nového servletu na *.html web-app version="2.5"

index.jsp - Cas je: ${time} Vyzkoušejte to A teď bude potřeba přidat ještě ${user} - co vše musíte udělat?

Page 6: Tvorba webových aplikací s Apache Maven

<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope></dependency><dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.1.2</version></dependency><dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version></dependency>

Dependency k úkolu

Page 7: Tvorba webových aplikací s Apache Maven

Vývoj webappJak se řeší nutnost buildování Waru?

Build buildí přímo do tomcat/webapps I tak však usíme při změně kódu pouštět build

Používáme Exploded War a IDE kompiluje do WEB-INF/classes Při změně .java nutno restartovat tomcat (nebo touch web.xml)

Debugujeme aplikaci přes Java Remote Debugging - změny IDE přenese

Nepřenesou se větší strukturální změny To řeší Java Rebel - komerční, složitá konfigurace

Page 8: Tvorba webových aplikací s Apache Maven

<build> <finalName>TestWebApp</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> </configuration> </plugin> </plugins></build>

Maven Jetty PluginVyvíjíme fofrem

Page 9: Tvorba webových aplikací s Apache Maven

Úkol 2.1 - vypusťte jettyho

1. mvn jetty:run ve složce aplikace

2. Proveďte změnu v IndexControllerServlet.java - uložte do request scope message a zobrazte na JSP stránce ${message}

3. Propagujte změnu do jettyho1. Make Idea, Save v Eclipse nebo mvn compile z command line

4. Chvilku počkejte a pak reload v prohlížeči, změny se projeví

Page 10: Tvorba webových aplikací s Apache Maven

Maven Cargo PluginKdyž jetty nestačí

Automatická instalace kontejneru ze ZIPu z URL Deploy jednoho nebo více J2EE (War, EAR) do kontejneru

Podporované kontejnery - Jboss, Tomcat, Jetty, Weblogic, OC4j, Jonas Spuštění kontejneru v rámci integračního testu (HttpUnit, Selenium)

Archetypy: Single Webapp Module Archetype, Separate Functional Test Module Archetype

Page 11: Tvorba webových aplikací s Apache Maven

<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <configuration> <container> <containerId>tomcat6x</containerId> <zipUrlInstaller> <url>http://www.apache.org/dist/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.zip</url>

</zipUrlInstaller> </container></configuration>

</plugin>

Cargo - Automatická instalace kontejneru z URL

Page 12: Tvorba webových aplikací s Apache Maven

Úkol 3.1 - stáhněte si v buildu tomcat

1. Nakonfigurujte si v pom.xml cargo plugin pro tomcat6x s ZipUrlInstaller

2. mvn package cargo:start1. Tomcat se stáhne z uvedené URL, rozbalí a spustí s vaší aplikací

3. Ověřte URL v prohlížeči http://localhost:8080/TestWebApp/index.html

4. Hotovo :)? Použijte element ZipUrlInstaller/installDir<installDir>${project.build.directory}/cargoinstalls</installDir>

Page 13: Tvorba webových aplikací s Apache Maven

<plugin><groupId>org.codehaus.cargo</groupId><artifactId>cargo-maven2-plugin</artifactId><configuration> <container>... kontejner s ZipUrlInstaller ...</container> <configuration>

<deployables><!--Deployables musí byt i dependency pomu --> <deployable>

<groupId>${pom.groupId}</groupId><artifactId>TestWebApp1</artifactId><type>war</type><properties><!-- url bude localhost/test --> <context>test1</context></properties>

</deployable> <!-- dalsi wary, ejb nebo eary --></deployables>

</configuration></configuration></plugin>

Deploy více warůVarianta kontejner z URL

Page 14: Tvorba webových aplikací s Apache Maven

Úkol 3.2 - deploy více warůVarianta kontejner z URL

1. Vytvořte si TestWebApp1 a TestWebApp2 a instalujte do lokální repo (mvn install)

2. Nakonfigurujte si nový pom.xml s cargo plugin a tomcat6x s ZipUrlInstaller

3. Do pom.xml přidejte TestWebApp1 a 2 jako dependency

4. Přidejte configuration/cofiguration/deployables

5. Spusťte cargo:start

6. Ověřte test1 a test2 v prohlížeči (http://localhost:8080/TestWebApp1/index.html a TestWebApp2/index.html)

7. Hotovo:)? Zkuste změnit tomcat za jettyho

Page 15: Tvorba webových aplikací s Apache Maven

<plugin><!-- doplnte cargo groupId a artifactId --><configuration> <configuration>

<type>runtime</type><properties>

<cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url>

<cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password></cargo.remote.password></properties>

</configuration> <container>

<containerId>tomcat6x</containerId><type>remote</type>

</container> <deployer>

<type>remote</type><deployables> <!-- doplnte deployables --></deployables>

</deployer></configuration></plugin>

Deploy více warůVarianta remote container

Page 16: Tvorba webových aplikací s Apache Maven

<!-- CATALINA_HOME/conf/tomcat-users.xml --><tomcat-users> <role rolename="manager"/> <user username="admin" password="" roles="manager"/> <!-- <role </tomcat-users>

Deploy více warůTomcat uživatel pro deploy

Page 17: Tvorba webových aplikací s Apache Maven

Úkol 3.2.1 - deploy více warůVarianta remote container

1. Nakonfigurujte si nový pom.xml s cargo plugin a tomcat6x s ZipUrlInstaller

2. Do pom.xml přidejte TestWebApp1 a 2 jako dependency

3. Přidejte configuration/configuration/properties s cargo.tomcat.manager.url (+username, password)

4. Přidejte configuration/deployer[@type="remote"]/deployables

5. Spusťte tomcat s nainstalovanou manager aplikací a adminem v tomcat-users

6. Spusťte cargo:deploy

7. Ověřte URL v prohlížeči - http://localhost:8080/manager/html

Page 18: Tvorba webových aplikací s Apache Maven

<!-- ukazka pouziti property --><cargo.remote.password>${cargo.remote.password}</cargo.remote.password>

<!-- Deploy na localhost pres http - tomcat managera--><profile> <id>localhost</id> <activation>

<activeByDefault>true</activeByDefault> </activation> <properties>

<cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url>

<cargo.remote.username>admin</cargo.remote.username><cargo.remote.password></cargo.remote.password>

</properties></profile>

Deploy více warůprofily

Page 19: Tvorba webových aplikací s Apache Maven

<!-- Deploy na localhost pres http - tomcat managera--><profile> <id>localhost</id> <!-- mvn cargo:start je nyní stejne jako mvn cargo:start -P localhost --> <activation> <activeByDefault>true</activeByDefault> </activation> ...</profile>

Deploy více warůVýchozí profil -

activation/activeByDefault

Page 20: Tvorba webových aplikací s Apache Maven

Úkol 3.2.2 - deploy více warůVarianta remote container - profily

1. Do předchozího příkladu doplňte profil localhost na deploy do tomcatu běžícím na jiné URL.

1. V praxi využití např. tyto profily:

1. localhost deploy na lokálně běžící tomcat vývojáře

2. test deploy na referenční testovací prostředí

3. perf-test deploy na prostředí pro výkonnostní testy

2. Hotovo? Do profilu localhost doplňte activation/activeByDefault

Page 21: Tvorba webových aplikací s Apache Maven

mvn archetype:create -DgroupId=net.jetensky.webandmaven -DartifactId=TestWebApp -DarchetypeGroupId=org.codehaus.cargo -DarchetypeArtifactId=<JMENO_ARCHETYPU>

JMENO_ARCHETYPU:• cargo-archetype-webapp-single-module Funkční testy jsou v package /it/ v single pom webové aplikace • cargo-archetype-webapp-functional-tests-module Funkční testy jsou v samostatném modulu

Spuštění kontejneru v rámci integračního testu

Page 22: Tvorba webových aplikací s Apache Maven

Úkol 3.3.1 - spuštění integračních testů(single module)

1. Vytvořte si maven projekt z archetypu cargo-archetype-webapp-single-module

2. Opravte chybný package montreal.demo1. src\main\java\net\jetensky\webandmaven\SomeClass.java2. src\test\java\net\jetensky\webandmaven\SomeClassTest.java

3. Spušťte mvn cargo:install1. zbuilduje se aplikace2. spustí se Unit testy3. spustí se Jetty6 s novou aplikací4. spustí se integrační test WebappTest.java

Page 23: Tvorba webových aplikací s Apache Maven

Úkol 3.3.2 - spuštění integračních testů(multi module)

1. Vytvořte si maven projekt z archetypu cargo-archetype-webapp-functional-tests-module

2. Opravte chybu v package jako v předchozím příkladu3. Spušťte mvn cargo:install v root složce

Page 24: Tvorba webových aplikací s Apache Maven

Prostor pro dotazyDěkuji za pozornost

• Functional testing with maven and cargo• Myšlenky otce Fura - blog o Java (Honza Novotný)

• Jetyho články o vývoji SW na tomto blogu• Jetyho blog