Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje a nasazení SW.
Obsah
Agilní programovaní....................................................................................................2
Co je Agilní programovaní....................................................................................................2
Manifesto for Agile Software Development..............................................................................3
Motivace ...........................................................................................................................3
Principy ............................................................................................................................3
Zásada - stálý kontakt se zákazníkem - zadavatelem...................................................................3
Zásada - časté uvolňování funkčního S W.................................................................................4
Zásada - vysoká kvalita........................................................................................................4
Zásada - netvořit do zásoby...................................................................................................4
Extremní programování (Extreme Programming, XP) ........................................................4
Motivace pro Extreme Programming (XP) ...............................................................................4
CojeXP ...........................................................................................................................4
Charakteristika XP ..............................................................................................................5
Východiska řízení týmu podle XP ..........................................................................................5
Hlavní zásady XP................................................................................................................5
Vedlejší zásady XP..............................................................................................................5
Vývojové činnosti XP ..........................................................................................................6
Hlavní techniky XP .............................................................................................................6
Fáze XP projektu ................................................................................................................7
KISS (Keep It Simple, Stupid) .......................................................................................7
Princip KISS ......................................................................................................................7
Zásada - navrhovat jednoduše................................................................................................7
Zásada - netvořit do zásoby...................................................................................................7
Refaktoring................................................................................................................8
Refaktoring - proč ...............................................................................................................8
Refaktoring - metody ...........................................................................................................8
Refaktoring - nástroje kom....................................................................................................8
Refaktoring - nástroje o-s......................................................................................................9
Programování řízené testy (Test-drive Development, TDD).................................................9
Motivace ...........................................................................................................................9
Principy ............................................................................................................................9
Kde nelze testovat?..............................................................................................................9
Generický postup TDD ......................................................................................................10
Odkazy ...........................................................................................................................10
Systémy správy verzí .................................................................................................10
Motivace .........................................................................................................................10
1
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
Principy ..........................................................................................................................10
Klasická řešení - RCS a CVS...............................................................................................11
Typické příkazy správy verzí...............................................................................................11
Klienti ............................................................................................................................11
Pro co se systémy nehodí? ..................................................................................................12
Subversion.......................................................................................................................12
Subversion - klient Tortoise pro Windows..............................................................................12
Tortoise ~ vzdálený přístup.................................................................................................12
Správa sestavování - Ant ............................................................................................13
Charakteristika .................................................................................................................13
Motivace .........................................................................................................................13
Struktura projektu .............................................................................................................13
Přikladl..........................................................................................................................13
Závislosti.........................................................................................................................13
Příklad 2..........................................................................................................................14
Maven ....................................................................................................................14
Motivace .........................................................................................................................14
Maven - charakteristika......................................................................................................14
Project Object Model (POM)...............................................................................................15
Projekt v Mavenu..............................................................................................................15
Maven repository ..............................................................................................................15
Instalace a nastavení ..........................................................................................................16
Příklad POM (project.xml)..................................................................................................16
Příklad POM - pokračování.................................................................................................17
Struktura POM obecně .......................................................................................................17
Proměnné (properties) v POM .............................................................................................17
Struktura repository ...........................................................................................................18
Cíle v Mavenu..................................................................................................................18
Maven Plugins..................................................................................................................18
Často používané cíle..........................................................................................................19
Vytvoření projektu ............................................................................................................19
Reporting ........................................................................................................................19
Rozšíření možností Mavenu ................................................................................................20
Agilní programování
Co je Agilní programování
Agilní programování (Agile Programming, AP) je relativně novým přístupem k vývoji software.
• Není to jedna metodika, přesný návod, jak systém navrhnout a realizovat.
• Je to spíše přístup, "filozofie", do které je třeba dodat konkrétní postupy pro jednotlivé úkony vývoje.
• Označení Agilní programování bylo poprvé zavedeno skupinou autoritativních odborníků (praktiků) na SW metodiky.
2
a nasazení SW.
• Zastánci AP se sdružili při sestavení manifestu AP, formulující jeho hlavní zásady.
Manifesto for Agile Software Development
„We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: "
individuals and interactions over processes and tools"
„Working software over comprehensive documentation"
„Customer collaboration over contract negotiation"
„Responding to change over following a plan "
„That is, while there is value in the items on the right, we value the items on the left more."
Motivace
Motivací pro AP byla především řada neúspěchů při budování rozsáhlých softwarových děl a řízení realizačních projektů.
• Projekty trvaly déle, než se předpokládalo. Stály více peněz.
• Objevovala se negativa typu "hraní na úspěch/výsledek" a nikoli výsledek sám.
• K cíli se nešlo přímočaře, produkovaly se dále nevyužité (nevyužitelné) artefakty, věci do zásoby.
• Mezi zadavatelem (zákazníkem) a tvůrcem byla propast (formalizmus místo spolupráce).
• Vytvořené produkty pak často neodpovídaly aktuální potřebě...
Principy
• Realizovat věci nejjednodušším možným způsobem.
• Tak se předejde nadměrné složitosti vytvářeného artefaktu.
• Je větší šance, že produkt bude bez chyb.
• Vynakládání prostředků lze při dodržení této zásady lépe kontrolovat.
Zásada - stálý kontakt se zákazníkem - zadavatelem
3
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
Namísto jednorázového (obvykle složitého) jednání o smlouvách s přesnou (a v podstatě statickou) specifikací zadání:
• Zákazník (budoucí uživatel) je ve stálém, nejlépe denním a osobním kontaktu s vývojářem.
• Takové dynamické týmy musejí být dobře motivované, nehrát si na úspěch, ale musejí o něj stát.
Zásada - časté uvolňování funkčního SW
• Zákazník často dostává nové verze (měsíčně, ještě lépe týdně), ihned konfrontuje stav s požadavky, hledá chyby...
Zásada - vysoká kvalita
• Technická kvalita je základem. Neváhá se kvůli tomu podstoupit i radikální refaktoring kódu.
Zásada - netvořit do zásoby
• Nemá se tvořit (programovat) "dopředu", "do zásoby".
• Ze zkušeností totiž vyplývá, že takové artefakty obvykle už nepoužijeme.
Extremní programování (Extreme Programming, XP)
Motivace pro Extreme Programming (XP)
Na vývoj software má vliv mnoho faktorů, které se neustále mění (zadání, návrh, technologie, trh, složení týmu apod.). Obecně lze říci, že změna je jedinou konstantou vývoje software. Problémem vývoje softwaru je schopnost úspěšného zvládnutí těchto změn za přijatelné náklady.
• Toto je východisko pro řadu moderních metodik programování (řízení SW projektů), které se souhrnně označují jako agile programming.
• Mezi ně patří i Extreme Programming (XP).
Co je XP
Viz J. Ministr, IT pro praxi, 2004:
4
a nasazení SW.
• Extrémní programování (XP) je metodika vývoje softwaru, která je postavena na tvorbě zdrojového textu v týmech, jež tvoří dva až deset programátorů. XP používá obecně známé principy a postupy vývoje softwaru, tyto však dotahuje do extrémů.
Charakteristika XP
Od ostatních metodik se XP odlišuje v následujících vlastnostech:
Automatizované testování
Verbální komunikace
Intuice
testy jsou tvořeny před samotnou tvorbou zdrojového textu za účelem následného ověření skutečného pokroku ve vývoji softwaru z hlediska jeho požadované funkcionality (testy navrhuje zákazník) a architektury programového modulu (testy navrhuje programátor).
společně s testy a zdrojovým textem slouží ke sdělování systémové struktury a záměru projektu.
Postupy, které podporují intuici programátorů a dlouhodobé zájmy projektu (testování, refaktorizace, integrace apod.).
Východiska řízení týmu podle XP
Komunikace
Jednoduchost
Odvaha
Udržení řádných komunikačních toků ovlivňuje kvalitu jednotlivých postupů XP (testování modulů, párové programování, stanovení metrik apod.).
Vývoj software je řízen zásadou, že je lepší udělat jednoduchou věc dnes, s vědomím, že zítra bude možná nutné provést další změnu, spíše než udělat složitější změnu dnes, která nemusí být uživatelem využita. Jednoduchost a komunikace jsou spolu komplementární. Čím více tým komunikuje, tím je mu jasnější co přesně má dělat. Naopak čím je jednodušší systém, tím méně potřebujeme komunikovat.
Členové týmu jsou ochotni experimentovat s vyšším rizikem a ziskem.
Hlavní zásady XP
Kvalitní práce představuje fixní proměnnou ze čtyř proměnných pro posouzení projektu (šíře
zadání, náklady, čas a kvalita) s hodnotou vynikající, při horší hodnotě členy týmu práce nebude bavit a projekt může skončit neúspěchem.
Vedlejší zásady XP
Hraní na výhru
představuje soustředění práce týmu na kvalitu vyvíjeného produk-
5
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
tu, nikoli na zbytečné alibistické činnosti, kdy tým pracuje „podle předpisů" (mnoho papírů a porad), aby se tzv. „neprohrálo".
Konkrétní experimenty kdy všechna abstraktní rozhodnutí by měla být převedena do řady
experimentů, které jsou následně otestovány.
Práce v souladu s lidskými instink- a nikoli proti nim představuje práci s krátkodobými zájmy lidí, ty kteří se rádi učí, vyhrávají, komunikují s ostatními apod.
Cestování nalehko představuje hodnotné a účinné nástroje vývoje softwaru, které
tvoří především testy a zdrojový text.
Vývojové činnosti XP
1. Psaní zdrojového textu
2. Testování
3. Poslouchání
4. Navrhování logiky systému
Hlavní techniky XP
• Plánovací hra stanoví šíří zadání následující verze software pomocí kombinace obchodních priorit a technických odhadů.
• Malá verze představuje rychlé uvedení jednoduchého systému do provozu. Následně jsou uvolňovány malé přírůstky systému ve velmi krátkých cyklech.
• Metafora pomáhá všem v projektu pochopit základní prvky systému a vztahy mezi nimi na základě jednoduchého přirovnání.
• Jednoduchý návrh u něhož je nadbytečná složitost ihned odstraněna v okamžiku jejího zjištění z návrhu.
• Testování představuje činnost programátorů a zákazníků, kdy programátoři testují zdrojový text z hlediska jeho programových vlastností, aby mohli pokračovat v jeho dalším psaní, a kdy uživatelé otestují funkcionalitu modulu, která je úspěšným provedením testu dokončena.
• Refaktorizace představuje restrukturalizaci systému s cílem zdokonalení jeho nefunkčních kvalit (pružnost, zjednodušení) bez vlivu na jeho chování.
• Párové programování představuje vývoj zdrojového textu dvěma programátory na jednom počítači. Společné vlastnictví
• Nepřetržitá integrace - okamžitá integrace dokončeného otestovaného přírůstku do systému.
6
a nasazení SW.
• 40 hodinový týden plus se nepracuje nikdy přesčas dva týdny za sebou.
• Zákazník na pracovišti - odpovídá na otázky programátorů při vývoji software. Standardy pro psaní zdrojového textu
Fáze XP projektu
Plánování představuje stanovení termínu programátory společně se zákazníky na základě postupu
plánovací hry. Do uvolnění první verze by mělo trvat mezi dvěma až šesti měsíci.
Smrt představuje stav systému, kdy je software neschopen své existence z důvodu neekono-
mického rozšíření jeho funkcionality, entropie (tendence k většímu počtu chyb). Zákazníci i manažeři by měli souhlasit s ukončením údržby systému s tím, že se snaží identifikovat příčiny zániku systému.
KISS (Keep It Simple, Stupid)
Princip KISS
Netýká se jen programování, je to obecný princip vývoje či realizace čehokoli.
Snahouje produkovat co nejjednodušeji, bez zbytečností, bez nadbytečností, s minimem chyb.
KISS přístup patří do základního arzenálu Agilního programování.
Ideovými předchůdci principu jsou např.:
• tzv. Occamova břitva (Occam's Razor [http://en.wikipedia.org/wiki/Occam%27s_Razor])
Zásada - navrhovat jednoduše
• Realizovat věci nejjednodušším možným způsobem.
• Tak se předejde nadměrné složitosti vytvářeného artefaktu.
• Je větší šance, že produkt bude bez chyb.
• Vynakládání prostředků lze při dodržení této zásady lépe kontrolovat.
Zásada - netvořit do zásoby
7
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
• Nemá se tvořit (programovat) "dopředu", "do zásoby".
• Ze zkušeností totiž vyplývá, že takové artefakty obvykle už nepoužijeme.
Refa kto ring
Refa kto ring - proč
Aplikace se vyvíjejí často překotně, pak je třeba "předělávat". Refaktoring je právě takové "předělávání":
přepis beze změny (vnějšího) chování/rozhraní směřuje ke zpřehlednění,
• optimalizaci,
• lepší rozšiřitelnosti
• robustnosti atd.
Refaktoring - metody
Hlavní metody:
• manipulace na úrovni návrhu: přesuny tříd mezi balíky, přejmenování tříd
• přesuny metod mezi třídami
• vysunutí metody do nadtřídy "vytknutí" (do) rozhraní
• zapouzření datového prvku (proměnné) přístupovými metodami
Refaktoring - nástroje kom.
Kvalitní komerční:
• RefactorIT - vč free trial
a nasazení SW.
Refaktoring - nástroje o-s
Základní i v open-source:
• Eclipse 3.0
• NetBeans 4.0
Programování řízené testy (Test-drive Development, TDD)
Motivace
• Klasický způsobe vývoje SW předpokládá testování jako následnou fázi - testy se píší a spouštějí až po návrhu software
• To je však paradoxní, protože návrh testů vychází - stejně jako návrh vlastního kódu - ze specifikace a to dokonce přímočařeji. Test je přímý odraz specifikace, protože programovým kódem hlídá chování, které je specifikací očekáváno.
• Programování řízené testy proto předřazuje návrh a implementaci testů před vývoj vlastního SW.
• Jde o metodiku vývoje samotného SW, ne testů.
Principy
• Nejprve sestavit test, pak psát kód.
Stejný cíl jako Návrh dle kontraktu (Design by Contract), ale separuje testy od kódu, testuje "zvenčí".
• Výhody: včasná (okamžitá) detekce chyb v kódu
• Nevýhody: nelze použít tam, kde je obtížné automatizovaně testovat
Kde nelze testovat?
... resp. teoreticky lze, prakticky však chybí přijatelné nástroje a metodiky:
• distribuovaná prostředí (částečně již lze: např. Cactus pro webové aplikace)
• grafická uživatelská rozhraní (i tam částečně lze: pomocí "robotů" na obsluhu GUI - na simulaci kli-kání a ovládání klávesnice)
9
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
Generický postup TDD
1. Napsat test - na základě specifikace (požadavků) reprezentovaných např. případy užití (usecases). Test bude používat samotný kód prostřednictvím rozhraní.
2. Napsat kód - aby splnil specifikaci a komunikoval se světem pomocí rozhraní (API).
3. Spustit automatizované testy.
4. V případě chyb kód přeprogramovat (refactoring) a
5. spustit testy znovu.
Odkazy
některé převzaty z Wikipedie, hesla Test-driven Development
[http://en.wikipedia.org/wiki/Test_driven_development]:
S.W.Ambler: Introduction to Test Driven Development (TDD)
[http://www.agiledata.org/essays/tdd.html]
• TestDriven.com [http://www.testdriven.com/]
• Test Driven Development (jiná Wiki) [http://c2.com/cgi/wiki7TestDrivenDevelopment]
Systémy správy verzí
Motivace
Systémy pro správu verzí jsou nezbytností pro
• údržbu větších SW projektů
• projektů s více účastníky
• projektů s vývojem z více míst
Pouhý sdílený, vzdáleně přístupný souborový systém nestačí.
Principy
10
a nasazení SW.
• efektivně ukládat více verzí souborů i adresářů (často s malými změnami)
• rychle získávat aktuální verzi, ale
• mít možnost vrátit se ke starší verzi zjistit rozdíly mezi verzemi
• zajišťovat proti souběžné editaci z více míst
• umožnit i lokální práci s následným potvrzením do systému (commit)
Klasická řešení - RCS a CVS
RC Revision Control System
S
CV Concurrent Version System
S
RCS je klasický, původně na UNIXech existující systém navržený pro sledování více verzí souborů.
Prvotním cílem bylo zefektivnit ukládání více verzí
s novou verzí se nemusí ukládat celý soubor rychle se dají zjistit rozdíly (změny) mezi verzemi
• historie změn (changelog, history) se lehce udržuje
• změny lze identifikovat i názvy - pojmenovat symbolickými klíčovými slovy ($Author$, $Date$...)
Typické příkazy správy verzí
(podobné jsou v CVS, SVN)
commit publikuje (odešle, potvrdí) změny z lokálního pracovního prostoru do skladu (repository)
remove maže soubory z lokálního pracovního adresáře, ze skladu se smažou až po "commit"
add přidá nový soubor do pracovního adresáře, do skladu se přidají až po "commit"
update aktualizuje lokální kopii pomocí změn zaregistrovaných ostatními ve skladu
ckeckout vytvoří soukromou lokální kopii požadovaných souborů ze skladu, tyto můžeme lokálně editovat a posléze potvrdit (commit) zpět
Klienti
n
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
Syst. správy verzí nabízejí
• nativní klienty integrované do hostujícího prostředí webové rozhraní spíše pro prohlížení
• API pro přímý/programový přístup
Pro co se systémy nehodí?
• pro ukládání (stabilních) artefaktů
• jako úložiště (read-only) souborů pro stahování
... kdyby se to hodilo na všechno, nabízel by to každý filesystém...
Subversion
implementace systému řízení verzí
• moderní alternativa CVS
• jako server dostupný na všechny běžné platf. (zejm. Linux, Win)
server existuje jako samostatná aplikace, standardní použití je však s webovych serverem Apache
• klienti taktéž, např. na Win
Subversion - klient Tortoise pro Windows
Klient pro Win 2k, XP i 98... vč integrace do GUI
• kontextové nabídky
• nativní nástroje
Tortoise -- vzdálený pnstup
• Tortoise umožňuje bezpečný přístup k vzdálenému úložišti i prostřednictvím šifrovaných protokolů (server potom ale musí běžet přes Apache...)
• používá se upravený klient PuTTY
12
a nasazení SW.
Správa sestavování - Ant Charakteristika
• Antje platformove přenositelnou alternativou nástroje typu Make
• Antje rozšiřitelný - lze psát nejen nové "cíle", ale i definovat dílčí kroky - "úlohy"
• Popisovače sestavení používají XML syntaxi, psaní není tak náročné jako makefile
Motivace
• Proč Ant, když je tu dlouho a dobře fungující Make?
• Make byl koncipován jako doplněk shellu, psaly se skripty a nativní (platformove) nástroje Syntaxe byla složitá a neflexibilní
• Make jako takový nebyl rozšiřitelný
• Make byl zaměřen převážně na potřeby původního použití - jazyk C, unixový shell
Struktura projektu
Řízení sestavování Antem postupuje podle popisu v souboru build.xml. Ten obsahuje následující prvky:
project celý projekt, obsahuje sadu cílů, jeden z nich je hlavní/implicitní
target cíl, nejmenší zvenčí spustitelná jednotka algoritmu sestavování
task úloha, atomický krok sestavení, lze použít task vestavěný nebo uživatelský
Příklad 1 Závislosti
• Mezi cíly mohou být definovány závislosti.
• Závisí-li volaný cíl na jiném, musí být nejprve splněn cíl výchozí a pak teprve cíl závisející.
13
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
Cíl může záviset i na více jiných.
Varování
Pozor na cyklické závislosti!
Příklad 2
M ave n
Motivace
Pro sestavování, správu a údržbu SW projektů menšího a středního rozsahu se delší dobu úspěšně využíval systém Ant [http://ant.apache.org].
Oproti klasickým nástrojům typu unixového make poskytoval Ant platformove nezávislou možnost popsat i složité postupy sestavení, testování a nasazení výsledků SW projektu.
Ant měl však i nevýhody:
• pro každý projekt (i když už jsme podobný řešili) musíme znovu sestavit - poměrně velmi technický
popisovač (build.xmlWlKlřf-.IJlA
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=build.xml])
• popisovač je vždy téměř stejný a tudíž
• neříká nic o obsahu vlastního projektu, je jen o procesu sestavení, nasazení...
neumožňoval zachytit metadata nezbytná pro zařazení projektu do širšího kontextu, mezi související projekty, atd.
Maven - charakteristika
• nástroj řízení SW projektů
• open-source, součást skupiny nástrojů kolem Apache
14
a nasazení SW.
• dostupný a popsaný na http://maven.apache.org momentálně (září 2004) již jako použitelná, ostrá, verze 1.0
Project Object Model (POM)
projekt řízený Mavenem je popsán tzv. POM (Project Object Model), obvykle project.xml WlKlPFMA
ílir rni- riL i. I ■■■nt i
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=project.xml]
• POM nepopisuje postup sestavení, ale obsah projektu, jeho název, autora, umístění, licenci...
• postup sestavení je "zadrátován" v Mavenu, protože je pro většinu projektů stejný
• programátor není frustrován opakováním psaní popisovačů build. xmlWlKIPFDlA
Tip p pit Fil i. l-aiifc i
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=build.xml], návrhem adresářové struktury...
nicméně, Maven je založen na Ant, jeho build. xmlWlFCIPFFtlA
TTir ľni- Fn. ■■ L-^B-iL i
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=build.xml] popisovače lze znovupoužít
Projekt v Mavenu
Základní filozofie projektu v Mavenu:
• jeden projekt => jeden tzv. artefakt
Artefaktem může být typicky:
jar - obyčejná aplikace nebo knihovna (javové třídy, soubory .properties, obrázky...) .war - webová aplikace (serviety, JSP, HTML, další zdroje, popisovače) .ear - enterprise (EJB) aplikace (vše výše uvedené pro EJB, popisovače)
Maven repository
• základním organizačním nástrojem pro správu vytvořených (nebo používaných) artefaktů je repository
• artefakt, tj. výstup projektu, se může v repository vyskytovat ve více verzích
15
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
• repository je:
vzdálená (remote) slouží k centralizovanému umisťování jak vytvořených, tak používaných
artefaktů
dosažitelná pro čtení pomocí HTTP: je to de-facto běžné webové místo
lokální (local) slouží k ozrcadlení používaných artefaktů ze vzdálené repository
typicky zvlášt každému uživateli - v jeho domovském adresáři
slouží též k vystavení vytvořených artefaktů "pro vlastní potřebu"
• Maven má nástroje (pluginy) pro vystavování artefaktů do repository
Instalace a nastavení
Maven lze stáhnout z http://maven.apache.org v binární i zdrojové distribuci.
Binární distribuce je buďto čistě "java-based" nebo ve formě windowsového . exeVťlKIPF.ľJlA
"Tkp kni- Fib m ■npali
[http ://cs. wikipedia. org/wiki/Speci%C3 %A 1 ln%C3 %AD: Search? search=. exe].
Pak se nainstaluje do Program FilesWKIPFÍllA
íii r p pit Fík i. u n-i I* i
[http://cs.wikipedia.org/wiki/Speci%C3 %Alln%C3%AD:Search?search=Program Files]
Po instalace je třeba nastavit proměnnou prostředí maven_homeWIKIPEDIA
flip P pit Plk i. Ln-iBi
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=MAVEN_HOME] na adresář, kam se nainstaloval.
Kromě toho ještě přidat adresář %MAVEN_HOME%\binWllílľ,FíllA
ill p p pit Fib i. Ľ aan b i
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=%MAVEN_HOME%\bin] do PATH Wrl KI Pľ 131A [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=PATH].
TTip pni- Fib a L-raaLi
Příklad POM (project.xml)
Příklad minimálního popisovače project. xmlWlKlPFľllA
I™ i r F n t F i k i ■ I ■ ■■ i k i
[http://cs.wikipedia.org/wiki/Speci%C3 %Alln%C3%AD:Search?search=project.xmľJ:
3 RunningCalculator
RunningCalculator 0.l Object Computing, Inc.
16
a nasazení SW.
2004
calculates running pace
junit junit 3.8.l
src/java src/test
**/*Test.j ava
Struktura POM obecně
3
unique-proj ect-id
proj ect-name
repository-directory-name
version
Proměnné (properties) v POM
17
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
• Jsou podobně jako u Antu definovatelné a využitelné (odkazovatelne) v popisovači, zde project . xmlWlCIPFMA
TTir tni- Fib ■■ L-iBiL i
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=project.xml].
• Vyskytne-li se zavedení určité vlastnosti (property) vícekrát, uplatní se poslední.
• Vlastnosti jsou vyhledávány v pořadí:
1. pro j ect. propertie
Ihr ťni- FiL ■■ ť^B-iL ■
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=project.properties]
2. build.propertiesWlKtTT.TllA
"Inr F"ni- Fib i. L-jb-iL i
[http://cs.wikipedia.org/wM/Speci%C3%Alln%C3%AD:Search?search=build.properties]
3. $ { user . home } /build. properties"Wl"K"IPFf}lA
"fnr ľni- Fil i. L-^nk ■
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=${user.home}^uild.p roperties]
4. vlastnosti specifikované na příkazové řádce -Dkey= value
• Na vlastnost se lze odvolat pomocí $ {property-name }
Struktura repository
Týká se jak vzdálené, tak lokální repository.
Obecně je relativní cesta v rámci repository k hledanému artefaktu: repository/resource-direc-tory/jars/jar-file
konkrétní např.: repository/junit/jars/junit-3.8.1jar
Cíle v Mavenu
Cíle (goals) v Mavenu odpovídají zhruba antovým cílům (target).
Spouštění Mavenu vlastně odpovídá příkazu k dosažení cíle ("attaining the goal"):
maven plugln-name[: goal-name
r i r F nimFik i ■ iiih i
[http ://cs. wikipedia. org/wiki/Speci%C3 %A 1 ln%C3 %AD: Search? search=maven ]
Maven Plugins
Zásuvné moduly (plugins) obsahují předdefinované cíle (goals) a jsou taktéž uloženy v repository. Většinou jsou jednoúčelové, slouží/směřují k jednomu typu artefaktu, např.:
18
a nasazení SW.
checkstyle, clean, clover, cruisecontrol, dist, ear, eclipse, ejb, fo, genapp, jalopy, jar, java, javadoc, jboss, jcoverage, maven-junit-report-plugin, pom, site, test, war, xdoc
Často používané cíle
clean smaže vygenerované soubory (podstrom targetWlfClľEľílA
ill r tni1 pil u Lniki
[http ://cs .wikipedia. org/wiki/Speci%C3 %A 1 ln%C3 %AD: Search?search=target]) javaxompile přeloží všechny javové zdroje
test spustí všechny testy
site vygeneruje webové sídlo projektu
dist vygeneruje kompletní distribuci
Vytvoření projektu
1. vytvořit prázdný adresář pro vytvářený projekt
2. spustit maven genapp WlfíIPRfllA
íli p p pit Fib u Lniii
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=maven genapp] (Zeptá se na id projektu, jeho jméno a hlavní balík. V něm předgeneruje jednu třídu.)
3. tím se vytvoří následuj ící soubory: • projectxml, project.properties
src/conf/app.properties
src/java/pa cka ge -dirs/Appjava src/test/pa ckage-dírsl AbstractTestCase.java src/test/pa ckage-dírsl AppTest.java src/test/pa cJcage-dirs/NaughtyTestjava
Reporting
Generování reportů (zpráv) je jednou se základních funkcí Mavenu.
Které reporty se generují, je regulováno v projectxml v sekci reports:
maven-checkstyle-plugin
19
Metodiky vývoje - Agilní a extrémni programování. Nástroje správy vývoje
maven-j avadoc-plugin maven-junit-report-plugin
Rozšíření možností Mavenu
Cílů (goals) je sice v Mavenu řada, ale přesto nemusejí stačit anebo je třeba měnit jejich implicitní chování.
Potom lze před nebo po určitý cíl připojit další cíl pomocí preGoal a postGoal.
Ty se specifikují buďto v nebo.
1 maven. xmlWlKIPFDlA
ílir ťnv Fil ■■ L-^a-iL ■
[http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=maven.xml] ve stejném adresáři jako project .xml WlKIPFIllA
I . -h- n tu;.' 1.-. •.
[http://cs.wikipedia.org/wiki/Speci%C3%A 1 ln%C3%AD: Search?search=project.xml] nebo 2. v zásuvném modulu (pluginu)
Zcela nové cíle je možné napsat ve skriptovacimjazykuje/Zy (s XML syntaxí).
20