Identity Lifecycle Management

Podobné dokumenty
Výnimky

Identity Lifecycle Management

História

PowerPoint Presentation

enum

DediĊnosť

Objektovo orientované programovanie

Tue Oct 3 22:05:51 CEST Začiatky s jazykom C 2.1 Štruktúra programu Štruktúra programu by sa dala jednoducho popísať nasledovnými časťami, kto

User:Andrej Sedlacek

PowerPoint Presentation

Úroveň strojového kódu procesor Intel Pentium Pamäťový operand Adresovanie pamäte Priama nepriama a indexovaná adresa Práca s jednorozmerným poľom Pra

Identity Lifecycle Management

Používateľská príručka POUŽÍVATEĽSKÁ PRÍRUČKA Generátor XML dávok pre Informačný systém kontrolných známok z MS Excel šablóny Dátum: Verzia

midterm2014_1

Microsoft PowerPoint - OOP_prednaska_10.pptx

Balíčkovanie FreeSWITCH-u pre Debian Autor: Zdenko Holeša, InžProjekt 1, KIS FRI ŽU Predkompilované balíčky Predkompilované balíčky existujú pre Debia

Funkcionálne programovanie Cvičenie 9 Funkcionálne programovanie v Jave Sergej Chodarev 22. november 2017 Technická Univerzita v Košiciach

Snímka 1

midterm2019

GEODETICKÝ A KARTOGRAFICKÝ ÚSTAV BRATISLAVA Chlumeckého 4, Bratislava II Obsah 1. Export údajov ZBGIS do CAD formá

NÁVRH UČEBNÝCH OSNOV PRE 1

Identity Lifecycle Management

Algoritmizácia a programovanie - Príkazy

Konkurentné programovanie

PowerPoint-Präsentation

FAULTS DIAGNOSIS OF CONTROL SYSTEM USING THE OBSERVER

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

SAEAUT SNMP OPC Server

Matej Kendera - PDF, word, lucene, java

Princípy tvorby softvéru Programovacie paradigmy

PowerPoint Presentation

PowerPoint Presentation

Úvod do mobilného operačného systému ANDROID

bakalarska prezentacia.key

Pravidlá bezpečnosti pre majiteľov certifikátov certifikačnej autority DÔVERA zdravotná poisťovňa, a. s. Verzia 1.1 Platí od

03_ControlFlow.dvi

Snímka 1

Návod na vytvorenie kvalifikovaného elektronického podpisu prostredníctvom občianskeho preukazu s čipom Dátum zverejnenia: Verzia: 1 Dátu

1 Rekurencie este raz riesenia niektorych rekurencii z cvik. mame danu rekurenciu napr T (n) = at ( n b ) + k. idea postupu je postupne rozpisovat cle

iot business hub whitepaper isdd_em_New.pdf

Manuál aplikácie eoev

CviĊenie z PTS

Rýchly štart pre Powerline extra zásuvka

SPRINT 2

Snímka 1

Informačné technológie

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE Fakulta informatiky a informačných technológií STU Ústav počítačových systémov a sietí ZADANIE SEMESTRÁLNE

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, Bratislava 4 Askalot meets Harvard Cou

IT NEWS

Microsoft Word - Manazment_projektov_tim24_tema12_2017.docx

Slovenská technická univerzita v Bratislave FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ Ilkovičova 3, Bratislava Tímový projekt Ponuka Grafi

Slovenská technická univerzita v Bratislave

SK MATEMATICKA OLYMPIADA 2010/ ročník MO Riešenia úloh domáceho kola kategórie Z4 1. Doplň do prázdnych políčok čísla od 1 do 7 každé raz tak,

Programujeme krok za krokom prvú mobilnú aplikáciu v AI2

Zobrazenie čísiel v počítači Celé nezáporné čísla - čísla bez znamienka dvojková sústava iné používané sústavy - šestnástková a osmičková BCD kódovani

Autoregresné (AR) procesy Beáta Stehlíková Časové rady, FMFI UK Autoregresné(AR) procesy p.1/22

Konkurentné programovanie

Súkromné gymnázium, Česká 10, Bratislava INFORMATIKA

Katalóg cieľových požiadaviek k maturitnej skúške

Untitled

Paralelné algoritmy, cast c. 3

NSK Karta PDF

Centrum vedecko-technických informácií, Odbor pre hodnotenie vedy, Oddelenie pre hodnotenie publikačnej činnosti Vyhľadávanie a práca so záznamami - C

Teória pravdepodobnosti Zákony velkých císel

Obsah tejto príručky Microsoft Prechod na program Access 2010 z programu Access 2003 Vzhľad programu Microsoft Access 2010 sa výrazne odlišuje od prog

Paralelné algoritmy, cast c. 2

Microsoft Word - Manažment_tagov_tim24_tema12_2017.docx

Snímka 1

Zvýšenie kvality......

NSK Karta PDF

Všeobecná zdravotná poisťovňa

Pracovný postup pre vypĺňanie údajov elektronického formulára IŠIS pre spravodajskú jednotku 1

Trendy vývoja informatiky na ÚAMT

ECDL Syllabus V50 SK-V01

Architektúra a návrh Zdôvodnenie navrhnutej architektúry Systém si architektonicky môžeme rozdeliť na viacero vrstiev. Najpodstatnejšie je oddelenie z

Informačný systém pre externú časť a písomnú formu internej časti maturitnej skúšky Informačný systém pre EČ a PFIČ maturitnej skúšky Užívateľská prír

FAQ

Cvičenie I. Úvodné informácie, Ekonómia, Vedecký prístup

Technická dokumentácia Logger modulu Verzia Tabuľka 1. Autori Autor Tomáš Donko Rola

MO_pred1

BIBLIOTHEK ALS LERNORT IN (NAME DES ORTES) Ort, Datum

Distance search Ján Garaj Fakulta informatiky a informačných technológií Slovenská technická univerzita Školský rok: 2008/09 Popis problému a motiváci

Operačné systémy Prednáška č. 2 Windows 95 Windows 95 má povesť ľahko ovládateľného systému pre užívateľov a ťažkého systému pre programátorov. Začiat

Import absencí z ASC

Vývoj geografických aplikácií v GIS

Xesar Softvér Stručný návod

Súťaž Vráťme knihy do škôl je tu už po 8-krát! O súťaži Občianske združenie Učenie s úsmevom v spolupráci s partnermi internetové kníhkupectvo abcknih

Používateľská príručka Obsah Používateľská príručka... 1 Administrácia servera... 2 FTP... 2 Remote Desktop... 3 Administrácia databáze:... 3 Spusteni

Microsoft Word - 06b976f06a0Matice - Uzivatelska Dokumentacia

Obsah:

Zdravé sebavedomie odzrkadľuje spôsob, akým vidíme sami seba. Ak sa chceme stať sebavedomejšími ľuďmi, musíme zmeniť to, čo si myslíme sami o sebe, ak

dFlex Nitra spol. s r.o.

SK01-KA O1 Analýza potrieb Zhrnutie BCIME tím Vyhlásenie: "Podpora Európskej komisie pre výrobu tejto publikácie nepredstavuje súhlas

Metodika práce s gitom Spôsob práce s gitom V projekte sa budú udržovať dve hlavné vetvy: - Master - Hlavná vetva, ktorá odráža otestovaný funkčný kód

Identifikačný štítok TIMSS & PIRLS 2011 Dotazník pre žiaka 4. ročník Národný ústav certifikovaných meraní vzdelávania Pluhová 8, Bratislava IEA

Multithreading a komunikácia medzi procesmi a threadmi, Časová závislosť, kritická sekcia a vzájomné vylúčenie, súvislosti medzi týmito pojmami Riešen

Príručka pre používateľa bezpečnostného tokenu EZIO Pico Obsah: 1 Určenie 1 2 Popis produktu 1 3 Nesprávne zadaný PIN kód (PIN FAIL) 3 4 Použitie Aute

Vždy pripravení pomôcť Zaregistrujte svoj produkt a získajte podporu na lokalite Otázky? Kontaktujte Philips SPA20 Príručka už

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ Metodika archivácie verzií HW Tímový projekt Stratos FIIT M

Prepis:

13. prednáška (17.12.2018) Vlastné výnimky, static, JavaDoc, alebo Koniec PAZ1a 1

Výnimka Exception in thread "main" java.lang.nullpointerexception at Vynimkarka.kladnyPriemer(Vynimkarka.java:9) at Spustac.main(Spustac.java:10) 2

Výnimky špeciálne objekty výnimkových tried Čo sú to výnimky? vznikajú vo výnimočných stavoch, keď nejaké metódy nemôžu prebehnúť štandardným spôsobom alebo nevedia vrátiť očakávanú hodnotu takmer všetky moderné programovacie jazyky signalizujú výnimočný (neočakávaný) stav vo forme výnimiek 3

ArrayIndexOutOfBoundsException 4

Rôzne triedy výnimiek java.lang.nullpointerexception robíme operáciu typu null.metoda() java.lang.arithmeticexception: / by zero delili sme celočíselne nulou java.lang.negativearraysizeexception int[] pole = new int[-5]; java.lang.arrayindexoutofboundsexception: 10 použili sme index poľa 10, čo je mimo rozsahu poľa, ktoré malo veľkosť 10 alebo menej java.io.filenotfoundexception pokúšame sa otvoriť súbor na čítanie, ktorý neexistuje, alebo zapisovať do súboru na mieste, kde sa to nedá 5

Výnimková skaza Hodená výnimka okamžite ukončuje každú metódu alebo blok príkazov, kde sa vyskytne, a postupne vybubláva ak tomu nezabránime... 6

try { //... catch (TypVýnimky1 e) { //... catch (TypVýnimky2 e) { //... finally { try-catch-finally Rozdelenie výnimiek: kontrolované checked: musia sa odchytávať nekontrolované unchecked: nemusia sa odchytávať // príkazy, ktoré sa vykonajú bez ohľadu na to, čo sa stalo 7

Klasika public class Pomocnik { public List<Integer> nacitajcisla(file subor) { try (Scanner sc = new Scanner(subor)) { List<Integer> vysledok = new ArrayList<>(); while (sc.hasnext()) { vysledok.add(sc.nextint()); return vysledok; catch (FileNotFoundException e) { System.err.println("Chyba"); Musíme chytať, lebo kontrolovaná výnimka, iné výnimky vybublajú... return null; Kde je finally so zatvorením Scannera? 8

try { //... catch (TypVýnimky1 e) { //... catch (TypVýnimky2 e) { //... finally { try-catch-finally Rozdelenie výnimiek: kontrolované checked: musia sa odchytávať nekontrolované unchecked: nemusia sa odchytávať // príkazy, ktoré sa vykonajú bez ohľadu na to, čo sa stalo 9

Kontrolované výnimky Filozofický pohľad: zotaviteľné chyby Programátorsky pohľad: výnimky, ktoré sa nemôžu šíriť bez povšimnutia Kontrolované výnimky nemusíme odchytávať, ale nesmú byť vyhodené z metódy bez toho, aby to mala metóda vo svojom popise... 10

Klasika public class Pomocnik { public List<Integer> nacitajcisla(file subor) throws FileNotFoundException { try (Scanner sc = new Scanner(subor)) { List<Integer> vysledok = new ArrayList<>(); while (sc.hasnext()) { vysledok.add(sc.nextint()); return vysledok; Môžeme nechať vybublať aj kontrolovanú výnimku, len to musíme explicitne uviesť 11

throws public metoda( ) throws TypVýnimky1, TypVýnimky2,... { Zoznam typov výnimiek (výnimkových tried), ktoré môže metóda vyhodiť ako upozornenie pre používateľov metódy. v throws: môžu byť uvedené nekontrolované výnimky, ktoré sú z metódy vyhadzované ( vybublávané ) musia byť uvedené kontrolované výnimky, ktoré sú z metódy vyhadzované ( vybublávané ) 12

Kontrolovaná vs. nekontrolovaná Ako zistiť, ktorá výnimka je kontrolovaná a ktorá je nekontrolovaná? 13

Rodokmeň výnimiek 14

Throwable Každý objekt, ktorý sa dá vyhodiť, musí byť inštanciou triedy, ktorá rozširuje triedu Throwable upozornenie: koncovkou able končia zvyčajne mená rozhraní (Iterable, Comparable, Runable, ), Throwable je ale trieda 15

Výnimky v hierarchii Výnimky sú triedy v hierarchii dedičnosti Throwable Exception Error RuntimeException Nemusíme odchytávať (nekontrolované) 16

Druhy výnimiek Nekontrolované výnimky (Runtime Exceptions) nemusia sa uviesť v throws potomkovia triedy RuntimeException Chyby (Errors) ako nekontrolované výnimky... abnormálny stav systému, aplikácia nemá šancu sa zotaviť vznikajú, aby sa dalo zistiť miesto a príčina chyby potomkovia triedy Error Kontrolované výnimky (Exceptions) musia sa uviesť v throws čokoľvek, čo nie je nekontrolovaná výnimka alebo chyba zvyčajne rozširuje triedu Exception 17

Ktorá je aká? 18

Vyhadzovanie výnimiek if (subor == null) { throw new IllegalArgumentException( "Parameter subor nesmie byt null."); Cez príkaz throw vyhodíme referenciu na objekt výnimkovej triedy. 19

Informačná hodnota výnimky Cieľ: načítať čísla zo súboru Odchytená výnimka: InputMismatchException Používateľa nezaujíma, čo sa deje vo vnútri metódy a aká interná výnimka vznikla. Chcem kávu: PrazdnyZasobnikC10Exception 20

Informačná hodnota výnimky Výnimka má poskytnúť informácie tak, aby používateľ metódy (=iný programátor) vedel čo najskôr identifikovať príčinu alebo zostaviť dobrý odchytávaco-reakčný kód výnimky vyhodené počas vývoja výnimky vyhodené pri testovaní výnimky zaznamenané v logoch pri behu aplikácie Zdroje informácii: názov výnimkovej triedy popisná správa vo výnimke výnimka nižšej úrovne (príčina) 21

Vlastné výnimkové triedy Vytvoríme triedu rozširujúcu Exception, RuntimeException alebo inú existujúcu výnimkovú triedu vlastné zmysluplné konštruktory málokedy: môžeme pridať vlastné inštančné premenné alebo metódy Vlastné konštruktory konštruktory sa nededia zvyčajne sa inšpirujeme konštruktormi rodičovskej triedy 22

Vlastné výnimkové triedy public class NacitanieZlyhaloException extends Exception { public NacitanieZlyhaloException() { public NacitanieZlyhaloException(String message) { super(message); public NacitanieZlyhaloException(Throwable cause) { super(cause); public NacitanieZlyhaloException(String message, Throwable cause) { super(message, cause); príčina výnimky iná výnimka 23

Vyhadzujeme vlastnú výnimku public List<Integer> nacitajcisla(file subor) throws NacitanieZlyhaloException { if (!subor.exists()) { throw new NacitanieZlyhaloException( "Subor " + subor + " neexistuje."); 24

Prebaľovanie výnimiek Odchytenú výnimku nižšej úrovne prebalíme do vlastnej výnimky s väčšou informačnou hodnotou. FileNotFoundException InputMismatchException NacitanieZlyhaloException 25

Prebaľovanie výnimiek public List<Integer> nacitajcisla(file subor) throws NacitanieZlyhaloException { try (Scanner sc = new Scanner(subor)) { catch (InputMismatchException e) { throw new NacitanieZlyhaloException( "Subor obsahuje neciselny retazec.", e); Vyhadzujeme prebalenú výnimku Príčina (cause) vyhodenej výnimky 26

catch bloky ako to naozaj je Výnimky sú triedy v hierarchii dedičnosti try {... catch (FileNotFoundException e) { System.err.println("Nenašiel som súbor"); catch (IOException e) { System.err.println("Vstupno-výstupná chyba"); catch (Exception e) { System.err.println("Nastala nejaká výnimka"); Výnimka prechádza catch blokmi, pokiaľ ju niektorý neodchytí Prvý catch blok odchytí FileNotFoundException a potomkov Druhý catch blok odchytí IOException a potomkov Tretí catch blok odchytí Exception a potomkov 27

catch bloky ako to naozaj je catch bloky radíme od najšpecifickejšieho po najvšeobecnejší inak odchytíme výnimku skôr, ako si želáme Pozor na hierarchiu: pod výnimkou Exception sú aj nekontrolované výnimky RuntimeException neexistuje jednoduchá možnosť ako odchytiť iba kontrolované výnimky a nekontrolované poslať vyššie 28

Výnimky pri prekrývaní metód public class Film { public void dajumiestnenie() throws FilmException {... public class FilmNaDvd extends Film { public void dajumiestnenie() throws FilmException, DvdException {... Môžeme mať throws FilmException alebo NIČ Toto je pre kontrolované výnimky zakázané! Prekrývajúca metóda môže mať v throws iba podmnožinu kontrolovaných výnimiek pôvodnej triedy 29

Kontrolované vs. nekontrolované Ktorý typ výnimky použiť? Kontrolované výnimky sú experimentom, ktorý zlyhal. Bruce Eckel Kontrolované výnimky pre zotaviteľné chyby, nekontrolované pre programátorské chyby. Joshua Bloch žiadny iný OOP jazyk nemá kontrolované výnimky ani C# (poučili sa(?)), ani Python, ani C++... 30

Výnimky - časté chyby Problém neriešime - všetko zatajíme výnimka sa zhltne program nebeží, ale nik nevie prečo... try { citac = new Scanner(f); catch (FileNotFoundException e) { Banality riešime výnimkami try { int i = 0; while (true) { pole[i+1] = 2 * pole[i]; i++; catch (ArrayIndexOutOfBoundsException e) { 31

Výnimky - časté chyby Nechce sa nám robiť zmysluplné výnimky void metóda() throws Exception {... Neprebalené výnimky bublajú príliš vysoko sťažujeme sa na veci, ktoré už volajúci kód určite nevyrieši void upečkoláč() throws IOException, SQLException {... 32

static? Čo už vieme: funkcionalita je implementovaná v metódach metódy môžeme volať nad objektmi objekty tried vytvárame cez new Problém z minulosti: kopa metód, ktoré spravia nejakú činnosť, no nie sú nijako zviazané so stavom objektu (napr. priamo alebo nepriamo nevyužívajú inštančné premenné) File subor = new File("cisla.txt"); Pomocnik franklin = new Pomocnik(); List<Integer> cisla = franklin.nacitajcisla(subor); 33

static? Vytvárame inštanciu len kvôli jednej metóde, ktorá by rovnako dobre fungovala nech by bola v akejkoľvek triede. File subor = new File("cisla.txt"); Pomocnik franklin = new Pomocnik(); List<Integer> cisla = franklin.nacitajcisla(subor); Java nemá procedúry a funkcie na rozdiel od: procedurálnych jazykov (Pascal, C, Basic, ) procedurálnych jazykov s OOP rozšírením (Object Pascal, C++, PHP, ) 34

static static = patriaci triede metódy premenné class inštančné premenné statické premenné metódy statické metódy inštančné premenné metódy Objekty triedy 35

Statická metóda public class Pomocnik { public static List<Integer> nacitajcisla(file subor) throws NacitanieZlyhaloException {... V statických metódach nie je this! File subor = new File("cisla.txt"); List<Integer> cisla = Pomocnik.nacitajCisla(subor); Statická metóda sa volá nad triedou, nie nad referenciou na objekt triedy. 36

Statická metóda public class Pomocnik { public static List<Integer> nacitajcisla(file subor) throws NacitanieZlyhaloException {... V statických metódach nie je this! this (už vieme): this. nemusíme (takmer nikdy) písať Pre pokojnejší život: V statických metódach túto skratku nikdy nepoužívajte. 37

Statické premenné public class Pomocnik { private static int pocetvolaninacitajcisla = 0; public static List<Integer> nacitajcisla(file subor) throws NacitanieZlyhaloException { Pomocnik.pocetVolaniNacitajCisla++;... K statickým premenným pristupujeme cez názov triedy. Statická premenná nemá viacnásobné inštancie. 38

Konštanty Zmysluplné využitie statických premenných: konštanty public class FilmNaDvd { public static final double POLOMER_DVD = 6.0; private String nazovfilmu;... Kľúčové slovo final = niečo ako const v Pascale Hodnotu POLOMER_DVD už nemožno meniť FilmNaDvd.POLOMER_DVD = 7.0; The final field FilmNaDvd.POLOMER_DVD cannot be assigned 39

Zrady prístup k statickým veciam nestatickým spôsobom: File subor = new File("cisla.txt"); List<Integer> cisla = Pomocnik.nacitajCisla(subor); File subor = new File("cisla.txt"); Pomocnik franklin = new Pomocnik(); List<Integer> cisla = franklin.nacitajcisla(subor); Inštančný prístup k statickej veci (len warning, nie chyba) nikdy nepoužívame. 40

Zrady pre fajnšmekrov prístup k statickým veciam nestatickým spôsobom: File subor = new File("cisla.txt"); List<Integer> cisla = Pomocnik.nacitajCisla(subor); File subor = new File("cisla.txt"); Pomocnik franklin = null; List<Integer> cisla = franklin.nacitajcisla(subor); Je jedno, čo je v premennej franklin. Java len použije typ (triedu) premennej. 41

O nepísaní vecí pred. this. nemusíme písať, lebo Java predpokladá lenivého (ale chytrého) programátora nechytrým sa vypomstí Postup, ak Java vidí niečo bez. je to lokálna premenná? OK, vybavené ak sa doplní this., bude to OK? pozor, v statických metódach this neexistuje ak sa doplní názov triedy, bude to OK? inak chyba 42

Statické metódy len rozvažne... Statické metódy zvádzajú k lenivosti Logika : Nechce sa mi vytvárať inštancie, všetko vyhlásim za statické Trpíme, lebo globálne zdieľame dáta Statické metódy vedú k hroznému návrhu keďže statické metódy nevidia nestatické premenné, vývojár začne zbesilo všetko meniť na statické Zmysluplné využitie: pseudotriedy, ktoré sú zoskupením užitočných metód a konštánt 43

java.util.collections Statické metódy nič nové Collections.sort(...) java.util.arrays Arrays.copyOf(...) java.lang.math Math.min(...) java.lang.system Mnoho projektov má kopu tried končiacich na Utils 44

JavaDoc Dokumentácia je súčasťou každého slušného projektu. Do dokumentácie sa zahrnú komentáre pred triedami, inštančnými premennými a metódami, ktoré začínajú znakmi /** Komentáre metód majú aj niekoľko špeciálnych označení @param vstupny_parameter popis vstupného parametra @return popis výstupnej hodnoty @throws vymenovanie vyhadzovaných výnimiek JavaDoc komentáre využívajú generátory dokumentácie a vývojové prostredia (IDE) 45

Maven Komplexný nástroj pre správu, riadenie a automatizáciou buildov aplikacií Štandard vo svete Javy artefakt (artifact) základný prvok Mavenu - niečo, čo je výsledkom projektu alebo je to použité projektom archetyp (archetype) artefakt s predpripravenou šablónou projektu 46

JPAZ2 archetypy Katalóg archetypov pre predmet PAZ1a: http://jpaz2.ics.upjs.sk/maven/archetype-catalog.xml jpaz2-archetype-novice jpaz2-archetype-quickstart jpaz2-archetype-launcher jpaz2-archetype-theater 47

Mavenovský projekt = Maven artefakt Identifikácia artefaktov: Maven - artefakty groupid jedinečná identifikácia skupiny artefaktov artifactid identifikácia artefaktu v rámci skupiny pre nás: názov projektu version verzia artefaktu packaging typ výstupu 48

Maven - závislosti Chcem použiť nejakú cool knižnicu vo svojom projekte (svojom artefakte) = pridám cool knižnicu (jej artefakt) ako závislosť (dependency) do projektu Závislosti = iné artefakty, ktoré potrebujem pre fungovanie môjho projektu (artefaktu) Zdroje artefaktov: Maven Central Repository Takmer všetky známe i menej známe Java projekty. vyhľadávanie: https://search.maven.org/ vlastné (privátne) repozitáre artefakty nainštalované v lokálnom repozitári (cache) 49

Pridanie závislosti <dependency> <groupid>sk.upjs</groupid> <artifactid>jpaz2</artifactid> <version>1.1.1</version> </dependency> pom.xml kompletný popis projektu 50

pom.xml Project Object Model v xml formáte popisuje projekt závislosti pluginy konfigurácie proces zostavovania ( buildovania ) Effective POM reálne použitý pom.xml pom.xml 51

Buildovanie Cieľ buildovania = čo chceme vykonať 52

Ciele buildovania package vytvorí jar-ko ak je packaging nastavený na jar (iné zatiaľ nepoznáme) vytvorí spustiteľné a minimalizované jar-ko ak sa použije konfigurácia pom.xml akú vytvárajú napr. JPAZ2 archetypy <exec.mainclass>trieda spúštača</exec.mainclass> výstup: v podadresári target projektu javadoc:javadoc podľa javadoc komentárov vytvorí dokumentáciu výstup: v podadresári target/site/apidocs 53

Ako to funguje? Lifecycle = postupnosť fáz buildovania Pluginy = vykonávajú reálnu prácu cez žiadosť na vykonanie nejakého cieľa Ciele sa môžu zaregistrovať do nejakých fáz (cez pom.xml alebo samé) 54

Goals: fáza lifecycle = vykonaj všetko po danú fázu (vrátane) napr. package Čo napísať do goals? cieľ pluginu = vykonávaj life-cycle až kým nevykonáš cieľ ak cieľ nie je napojený na žiadnu fázu, len vykonaj cieľ javadoc:javadoc = vykonaj cieľ javadoc pluginu javadoc. 55

clean vyčisti (vymaž) všetky výstupy projektu compile site skompiluje projekt vytvorí dokumentáciu ku artefaktu install Typické ciele package + dalšie veci + inštalácia artefaktu do lokálneho repozitára 56

Ďakujem za pozornosť! 57