tvorba webových aplikací s apache maven

Post on 12-Jan-2016

75 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Tvorba webových aplikacís Apache Maven

Využití Mavenu pro efektivní vývoj

Jety Pavel Jetenský

29.10.2009

1. Založení nové webové aplikace

2. Vývoj webové aplikace

3. Nasazení (deploy)

Úkoly při vývoji webu

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

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

Úkol 1.2 - spusťte aplikaci v tomcatu

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

Ú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?

<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

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

<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

Ú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í

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

<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

Ú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>

<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

Ú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

<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

<!-- 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

Ú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

<!-- 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

<!-- 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

Ú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

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

Ú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

Ú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

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

top related