1 / 24

Tvorba webových aplikací s Apache Maven

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

haven
Download Presentation

Tvorba webových aplikací s Apache Maven

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Úkoly při vývoji webu Založení nové webové aplikace Vývoj webové aplikace Nasazení (deploy)

  3. Maven Archetype PluginÚkol 1.1 - založte si webovku mvn archetype:create -DgroupId=net.jetensky.webandmaven -DartifactId=TestWebApp -DarchetypeArtifactId=maven-archetype-webapp

  4. Úkol 1.2 - spusťte aplikaci v tomcatu mvn package copy target/TestWebApp.war $Tomcat/webapps $Tomcat/bin/startup.bat http://localhost:8080/TestWebApp

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

  6. Dependency k úkolu <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>

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

  8. MavenJettyPluginVyvíjíme fofrem <build> <finalName>TestWebApp</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> </configuration> </plugin> </plugins> </build>

  9. Úkol 2.1 - vypusťte jettyho mvnjetty:run ve složce aplikace Proveďte změnu v IndexControllerServlet.java - uložte do requestscopemessage a zobrazte na JSP stránce ${message} Propagujte změnu do jettyho Make Idea, Save v Eclipse nebo mvncompile z command line Chvilku počkejte a pak reload v prohlížeči, změny se projeví

  10. 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

  11. Cargo - Automatická instalace kontejneru z URL <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>

  12. Úkol 3.1 - stáhněte si v buildu tomcat Nakonfigurujte si v pom.xmlcargoplugin pro tomcat6x s ZipUrlInstaller mvnpackagecargo:start Tomcat se stáhne z uvedené URL, rozbalí a spustí s vaší aplikací Ověřte URL v prohlížeči http://localhost:8080/TestWebApp/index.html Hotovo :)? Použijte element ZipUrlInstaller/installDir<installDir>${project.build.directory}/cargoinstalls</installDir>

  13. Deploy více warů Varianta kontejner z URL <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>

  14. Úkol 3.2 - deploy více warůVarianta kontejner z URL Vytvořte si TestWebApp1 a TestWebApp2 a instalujte do lokální repo (mvninstall) Nakonfigurujte si nový pom.xml s cargoplugin a tomcat6x s ZipUrlInstaller Do pom.xml přidejte TestWebApp1 a 2 jako dependency Přidejte configuration/cofiguration/deployables Spusťte cargo:start Ověřte test1 a test2 v prohlížeči (http://localhost:8080/TestWebApp1/index.html a TestWebApp2/index.html) Hotovo:)? Zkuste změnit tomcat za jettyho

  15. Deploy více warů Varianta remote container <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>

  16. Deploy více warů Tomcat uživatel pro deploy <!-- CATALINA_HOME/conf/tomcat-users.xml --> <tomcat-users> <role rolename="manager"/> <user username="admin" password="" roles="manager"/> <!-- <role </tomcat-users>

  17. Úkol 3.2.1 - deploy více warůVarianta remote container Nakonfigurujte si nový pom.xml s cargo plugin a tomcat6x s ZipUrlInstaller Do pom.xml přidejte TestWebApp1 a 2 jako dependency Přidejte configuration/configuration/properties s cargo.tomcat.manager.url (+username, password) Přidejte configuration/deployer[@type="remote"]/deployables Spusťte tomcat s nainstalovanou manager aplikací a adminem v tomcat-users Spusťte cargo:deploy Ověřte URL v prohlížeči - http://localhost:8080/manager/html

  18. Deploy více warů profily <!-- 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>

  19. Deploy více warů Výchozí profil - activation/activeByDefault <!-- 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>

  20. Úkol 3.2.2 - deploy více warůVarianta remote container - profily Do předchozího příkladu doplňte profil localhost na deploy do tomcatu běžícím na jiné URL. V praxi využití např. tyto profily: localhost deploy na lokálně běžící tomcat vývojáře test deploy na referenční testovací prostředí perf-test deploy na prostředí pro výkonnostní testy Hotovo? Do profilu localhost doplňte activation/activeByDefault

  21. Spuštění kontejneru v rámci integračního testu • mvn archetype:create -DgroupId=net.jetensky.webandmaven -DartifactId=TestWebApp -DarchetypeGroupId=org.codehaus.cargo -DarchetypeArtifactId=<JMENO_ARCHETYPU> • JMENO_ARCHETYPU: • cargo-archetype-webapp-single-moduleFunkční testy jsou v package /it/ v single pom webové aplikace • cargo-archetype-webapp-functional-tests-moduleFunkční testy jsou v samostatném modulu

  22. Úkol 3.3.1 - spuštění integračních testů(single module) • Vytvořte si maven projekt z archetypu cargo-archetype-webapp-single-module • Opravte chybný packagemontreal.demo • src\main\java\net\jetensky\webandmaven\SomeClass.java • src\test\java\net\jetensky\webandmaven\SomeClassTest.java • Spušťtemvncargo:install • zbuilduje se aplikace • spustí se Unit testy • spustí se Jetty6 s novou aplikací • spustí se integrační test WebappTest.java

  23. Úkol 3.3.2 - spuštění integračních testů(multi module) Vytvořte si maven projekt z archetypu cargo-archetype-webapp-functional-tests-module Opravte chybu v package jako v předchozím příkladu Spušťte mvn cargo:install v root složce

  24. 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

More Related