VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage Část 1.
Software používaný na cvičeních Apache Maven 2 nástroj pro správu a údržbu softwarových projektů Sun Glassfish v3 aplikační server platforma Java EE 6 Derby DB Relační databáze napsaná v Javě NetBeans (možno i další např. Eclipse, IDEA aj.) vývojové prostředí (IDE)
Co je Maven? Nástroj pro správu a údržbu softwarových projektů (napsaný v Javě) Management závislostí Životní cyklus projektu sekvence fází, namátkově compile, test, package, install Generování dokumentace Uskladnění tzv. artefaktů v repositáři artefakt je produkt sestavení projektu, např. jar, war ap.
Hlavní životní cyklus projektu Fáze: process-resources – příprava zdrojových souborů, pre-processing compile – překlad process-test-resources – příprava zdrojových souborů testů test-compile – kompilace testů test – spuštění testů package – zabalení sestaveného projektu, vytvoření artefaktu install – instalace artefaktu na lokálním počítači deploy – instalace artefaktu na podnikovém (společném) počítači
Fáze a pluginy Na jednotlivé fáze se "lepí" tzv. pluginy, které vykonávají určitou činnost v rámci fáze životního cyklu. Každý plugin může vykonávat více činností, tzv. cíle (goals). K fázi se vždy váže cíl pluginu. K jedné fázi může být napojeno více cílů různých pluginů. Fáze Plugin:Cíl ... compile compiler:compile ... test surefire:test ...
Vedlejší životní cykly projektu Fáze: pre-clean – akce prováděné před vyčištěním Clean: clean – odstranění pozůstatků z předchozích sestavení post-clean – akce prováděné po vyčištění pre-site – kompilace testů site – spuštění testů Site: post-site – zabalení sestaveného projektu, vytvoření artefaktu site-deploy – instalace artefaktu na lokálním počítači
Objektový model projektu (POM) <project> <dependencies> </dependencies> <build> </build> </project> Všeobecné informace o projektu – název, verze ... Seznam přímých závislostí Konfigurace sestavení – cesty ke zdrojovým kódům, konfigurace pluginů ...
POM – všeobecné informace <project> <groupId>cz.vse.javaee.cviceni</groupId> <artifactId>mySimpleApp</artifactId> <packaging>jar</packaging> <version>1.0</version> <name>mySimpleApp</name> <url>http://java.vse.cz/4it447/Cviceni</url> <dependencies> ... </dependencies> <build> </build> </project> Globálně unikátní jméno skupiny (často organizace, firma atp.) Název artefaktu (archivu) Způsob zabalení sestaveného projektu Verze projektu Název projektu. Často odpovídá názvu artefaktu. Stránka projektu
POM – seznam závislostí <project> ... <dependencies> <dependency> <groupId>com.dev.heaven</groupId> <artifactId>nice-gadgets</artifactId> <version>2.1.5</version> <scope>compile</scope> </dependency> </dependencies> <build> </build> </project> Každá závislost je specifikována jedním elementem <dependency> Název skupiny artefaktu Název artefektu, často JARu Verze artefaktu V jakém rozsahu se závislost používá: compile, test, dependent
POM – seznam závislostí <project> ... <build> <resources> <resource> <directory>src/main/java</directory> </resource> </resources> <testResources> <testResource> <directory>src/test/java</directory> </testResource> </testResources> <plugins>...</plugins> </build> </project> Seznam adresářů se zdrojovými kódy Definice jednoho adresáře Seznam adresářů se zdrojovými kódy testů Definice jednoho adresáře s testy Seznam a konfigurace pluginů. Viz další snímek. Pozn.: Uvedené adresáře jsou přednastaveny a nemusí se takto explicitně uvádět.
Standardní struktura adresářů my-project pom.xml src main java <java_package> test java <java_package> target Adresář, kam se ukládají výsledky a mezivýsledky během sestavování projektu.
POM – konfigurace pluginů <project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> <debug>true</debug> </configuration> </plugin> </plugins> </build> </project> Vazba na fázi compile zde není uvedena, neboť je specifikována v popisovači pluginu. Konfigurace pluginu Analogické identifikátory jako u závislostí (verze vynechána) Vlastní konfigurace parametrů pluginu. Pro dokumentaci k parametrům pluginu viz http://maven.apache.org/plugins/index.html
Management závislostí Centrální repositář Veřejný repositář A Veřejný repositář B Všechny artefakty závislostí uvedených v POM se hledají v dostupných repositářích. Veřejné repositáře A a B se prohledávají pouze jsou-li explicitně uvedeny v POM, nebo v konfiguraci lokální instalace Mavenu. Podnikový repositář Lokální repositář mvn compile Maven
Práce s Maven klientem Spuštění životního cyklu až do určení fáze mvn <fáze> fáze musí patřit do jednoho ze tří životních cyklů možno spustit více cyklů: mvn <fáze1> <fáze2> Spuštění cíle vybraného pluginu mvn <plugin>:<cíl> Zadání parametrů pluginu pomocí Java systémových vlastností (-D) mvn <plugin>:<cíl> -D<parametr>=<hodnota>
Příklady mvn clean mvn compile mvn clean package mvn antrun:run spuštění životního cyklu Clean do fáze clean mvn compile spuštění hlavního životního cyklu do fáze compile mvn clean package spuštění dvou cyklů: Clean a hlavního mvn antrun:run spuštění cíle run pluginu antrun mvn antrun:run –DsomeProperty=123 zadání parametrů při volání cíle pluginu
Vygenerování aplikace z příkazové řádky Spustíme vestavěný plugin archetype a jeho cíl generate mvn archetype:generate - DarchetypeCatalog=http://kitscm.vse.cz/maven/arche type-catalog.xml parametr archetypeCatalog udává URL katalogu šablon projektů Vyberte z nabídky simpleWebApp-archetype (volba 1) Zadejte potřebné údaje vašeho nového projektu
Zadání parametrů nového projektu Group-id název organizace vse.javaee Artifact-uid název aplikace webapp1 Package Hlavní Java balíček aplikace Version počáteční verze
Sestavení aplikace Přejděte do adresáře aplikace webapp1 Spusťte příkaz mvn package V adresáři target je uložen WAR archiv aplikace
Umístění aplikace na server (deploy) Spusťte aplikační server Glassfish dávka startserv.bat v adresáři <cesta_instalace_gf>\glassfish\bin Otevřete v prohlížeči administrátorskou konzoli serveru http://localhost:4848 V panelu Applications klikněte na tlačítko Deploy Zadejte cestu k souboru webapp1.war V tabulce s aplikacemi klikněte na Launch
Vygenerování aplikace v NetBeans Postup New Project Vyberte kategorii Maven V seznamu Projects vyberte Project from Archetype Next Přidejte archetyp tlačítkem Add GroupId: cz.vse.javaee Artifact Id: simpleWebApp-archetype Version: 1.0 Repository: http://kitscm.vse.cz/maven/archetype-catalog.xml
Vygenerování aplikace v NetBeans Postup (pokračování) Vyberte nově vytvořený archetyp Vyplňte parametry projektu Finish Sestavení a spuštění aplikace Sestavení: kontextové menu Clean and Build nad uzlem projektu nebo "kladívko se smetáčkem" na liště Spuštění: kontextové menu Run nad uzlem projektu nebo zelená šipka na liště
Domácí úkol Dokončit všechny kroky ze cvičení Podívat se na následující stránky: http://maven.apache.org/guides/getting- started/maven-in-five-minutes.html http://docs.codehaus.org/display/MAVENUSER/The+ Maven+2+tutorial http://maven.apache.org/guides/introduction/introduct ion-to-the-lifecycle.html