{"id":52,"date":"2013-10-03T18:34:35","date_gmt":"2013-10-03T16:34:35","guid":{"rendered":""},"modified":"2018-11-05T20:09:12","modified_gmt":"2018-11-05T19:09:12","slug":"spletite-zavislosti-a-ivy-ii","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/spletite-zavislosti-a-ivy-ii\/","title":{"rendered":"Spletit\u00e9 z\u00e1vislosti a Ivy II"},"content":{"rendered":"<p><span lang=\"sk-SK\"><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left;\" src=\"\/sites\/default\/files\/imagepicker\/1\/sdfsd4.png\" alt=\"Obr\u00e1zok\" width=\"272\" height=\"204\" \/>Toto je pokra\u010dovanie \u010dl\u00e1nku o Apache Ivy, ktor\u00e9ho prv\u00fa \u010das\u0165 m\u00f4\u017eete n\u00e1js\u0165 <a href=\"http:\/\/spireng.sk\/en\/spletite-zavislosti-a-ivy\/\">tu<\/a>. V nej sme si povedali, \u017ee Ivy je n\u00e1stroj, ktor\u00fd sa ozna\u010duje ako tranzit\u00edvny mana\u017e\u00e9r z\u00e1vislost\u00ed, a \u017ee jeho hlavnou \u00falohou je pripravi\u0165 (fyzicky stiahnu\u0165 na po\u010d\u00edta\u010d) mno\u017einu s\u00faborov pod\u013ea ich z\u00e1vislost\u00ed definovan\u00fdch v repozit\u00e1ri. V tejto druhej \u010dasti sa pozrieme na jednu z najkomplikovanej\u0161\u00edch t\u00e9m, ktor\u00e9 sa Ivy t\u00fdkaj\u00fa, a tou s\u00fa konfigur\u00e1cie, a tie\u017e na naj\u010dastej\u0161ie pr\u00edkazy, ktor\u00e9 Ivy pozn\u00e1. <!--break--><\/span><!--more--><\/p>\n<p>V predch\u00e1dzaj\u00facom \u010dl\u00e1nku som hovoril, \u017ee z\u00e1vislosti s\u00fa roben\u00e9 na \u00farovni modulov, ale \u017ee v\u00fdsledkom je skupina s\u00faborov, ktor\u00e9 sa odvodzuj\u00fa pod\u013ea z\u00e1vislosti. Niekde medzi t\u00fdm mus\u00ed by\u0165 spojitos\u0165. A t\u00e1 spojitos\u0165 sa naz\u00fdva <em>Konfigur\u00e1cia<\/em>. Konfigur\u00e1cie s\u00fa asi jednou z najzlo\u017eitej\u0161\u00edch t\u00e9m, \u010do sa t\u00fdka Ivy, a preto sa pri nich chv\u00ed\u013eu zdr\u017e\u00edm.<\/p>\n<p>Ka\u017ed\u00fd modul m\u00e1 v sebe zadefinovan\u00e9 s\u00fabory (artefakty), ktor\u00e9 obsahuje. Rovnako m\u00e1 zadefinovan\u00fa mno\u017einu konfigur\u00e1ci\u00ed, kde najpodstatnej\u0161\u00ed parameter konfigur\u00e1cie je jej n\u00e1zov. D\u00f4le\u017eit\u00e9 je, \u017ee v zozname artefaktov m\u00e1 tie\u017e povedan\u00e9, do ktor\u00fdch konfigur\u00e1ci\u00ed dan\u00fd artefakt patr\u00ed. T\u00e1to inform\u00e1cia sa d\u00e1 potom vyu\u017ei\u0165 tak, \u017ee ja po\u017eiadam modul, aby mi odovzdal jeho artefakty, ale tie\u017e mu definujem konfigur\u00e1ciu, a tak je dos\u0165 mo\u017en\u00e9, \u017ee dostanem len tie, ktor\u00e9 s\u00fa pre dan\u00fa konfigur\u00e1ciu ur\u010den\u00e9. Tie\u017e sa to d\u00e1 vyjadri\u0165 jednoduchou rovnicou:<\/p>\n<p><em>modul + konfigur\u00e1cia = artefakty<\/em><\/p>\n<p>Konfigur\u00e1cia je teda spojivo medzi modulom a s\u00fabormi, ktor\u00e9 obsahuje. Alebo inak povedan\u00e9 hovor\u00ed o tom, \u017ee pre dan\u00fa konfigur\u00e1ciu modulu predstavuje <span style=\"background: transparent;\">v syst\u00e9me tieto a tieto s\u00fabory.<\/span> Je tu ale druh\u00fd d\u00f4le\u017eit\u00fd fakt a to, \u017ee konfigur\u00e1cia je tie\u017e s\u00fa\u010das\u0165ou z\u00e1vislosti. Modul toti\u017e nedefinuje len v\u00e4zbu na in\u00fd modul, ale s\u00fa\u010das\u0165ou tejto v\u00e4zby je tie\u017e inform\u00e1cia, \u017ee konfigur\u00e1cia modulu A z\u00e1vis\u00ed na konfigur\u00e1cii modulu B. \u010casto sa tak vytv\u00e1ra re\u0165az, kde moduly medzi sebou z\u00e1visia na rovnakej konfigur\u00e1cii, a teda ak za\u010dnete vybera\u0165 z\u00e1vislosti pre dan\u00fa konfigur\u00e1ciu, z\u00edskate v\u0161etky artefakty od v\u0161etk\u00fdch z\u00e1visl\u00fdch modulov v danej konfigur\u00e1cii. E\u0161te inak povedan\u00e9, viete aktivova\u0165 cel\u00fa sie\u0165 z\u00e1visl\u00fdch modulov st\u00e1le s inou konfigur\u00e1ciou a z\u00edskate tak st\u00e1le in\u00fa skupinu s\u00faborov.<\/p>\n<p>Chce to nepochybne dos\u0165 rozvinut\u00e9 abstraktn\u00e9 myslenie, aby ste to boli schopn\u00ed predstavi\u0165 si na prv\u00fdkr\u00e1t (mne osobne to robilo pomerne ve\u013ek\u00e9 probl\u00e9my), tak\u017ee si dajme jeden pr\u00edklad z praxe. M\u00e1te repozit\u00e1r, v ktorom s\u00fa ulo\u017een\u00e9 zdrojov\u00e9 k\u00f3dy a bin\u00e1rne s\u00fabory vytvoren\u00e9 z prekladu zdrojov\u00fdch k\u00f3dov. Zdrojov\u00e9 k\u00f3dy s\u00fa v\u017edy zoskupen\u00e9 spolu s bin\u00e1rkami v Ivy moduloch. A vy chcete raz vytiahnu\u0165 v\u0161etky zdrojov\u00e9 k\u00f3dy pod\u013ea nejak\u00fdch z\u00e1vislost\u00ed a raz v\u0161etky bin\u00e1rky. Tak\u017ee do ka\u017ed\u00e9ho modulu zadefinujete 2 konfigur\u00e1cie, napr\u00edklad <em>binary<\/em> a <em>source<\/em> a navz\u00e1jom moduly previa\u017eete tak, \u017ee ak niekto berie z dan\u00e9ho modulu artefakty konfigur\u00e1cie <em>binary<\/em> automaticky sa z\u00edskavaj\u00fa artefakty z\u00e1visl\u00fdch modulov z ich <em>binary<\/em> konfigur\u00e1cie. V\u00fdsledok je, \u017ee z jedn\u00e9ho repozit\u00e1ra potom viete vytiahnu\u0165 skupiny s\u00faborov rozdielneho typu pod\u013ea toho, ak\u00fa konfigur\u00e1ciu pou\u017eijete.<\/p>\n<p>Posledn\u00e1 t\u00e9ma, ktor\u00fa oh\u013eadom Ivy nie je mo\u017en\u00e9 vynecha\u0165, s\u00fa dva z\u00e1kladn\u00e9 pr\u00edkazy, ktor\u00e9 Ivy pou\u017e\u00edva a to je <em>Resolve<\/em> a <em>Retrieve<\/em>. <em>Resolve<\/em> znamen\u00e1 doh\u013eadanie v\u0161etk\u00fdch z\u00e1vislosti pre dan\u00fd modul a dan\u00fa konfigur\u00e1ciu. Znamen\u00e1 to, \u017ee Ivy skontroluje v\u0161etky repozit\u00e1re (m\u00f4\u017ee ich by\u0165 viac ako jeden), zist\u00ed, \u010di m\u00e1 dostupn\u00e9 v\u0161etky potrebn\u00e9 moduly a ich konfigur\u00e1cie a pr\u00edpadne v\u0161etko potrebn\u00e9 priprav\u00ed do cache. Ten druh\u00fd krok je, \u017ee potrebujete tieto s\u00fabory vytiahnu\u0165 do jedn\u00e9ho prie\u010dinku a na to sl\u00fa\u017ei pr\u00e1ve <em>Retrieve<\/em>. Ten vyu\u017eije inform\u00e1cie z cache z <em>Resolve<\/em> pr\u00edkazu a v\u0161etko potrebn\u00e9 priprav\u00ed.<\/p>\n<p>Ivy nie je jednoduch\u00fd n\u00e1stroj, preto\u017ee nerie\u0161i jednoduch\u00fd probl\u00e9m. Moje \u010dl\u00e1nky mali za \u00falohu vytvori\u0165 predstavu, \u010do je to za n\u00e1stroj, ak\u00e9 s\u00fa z\u00e1kladn\u00e9 pojmy v Ivy svete. Ak ste o\u010dak\u00e1vali Ivy n\u00e1vod s uk\u00e1\u017ekami k\u00f3du, tak v\u00e1s sklamem. Z m\u00f4jho poh\u013eadu je d\u00f4le\u017eitej\u0161ie najprv pochopi\u0165 syst\u00e9m ako celok a a\u017e potom sa za\u010da\u0165 zaobera\u0165 konkr\u00e9tnymi detailami. V pr\u00edpade, \u017ee ste pojali z\u00e1kladn\u00e9 pojmy, pochopili \u00fa\u010del a aj jednotliv\u00e9 \u010dasti syst\u00e9mu Ivy a vysporiadali sa s t\u00fdm, pre\u010do a ako s\u00fa postaven\u00e9 konfigur\u00e1cie, ste na najlep\u0161ej ceste za\u010da\u0165 tento n\u00e1stroj pou\u017e\u00edva\u0165.<\/p>","protected":false},"excerpt":{"rendered":"<p>Toto je pokra\u010dovanie \u010dl\u00e1nku o Apache Ivy, ktor\u00e9ho prv\u00fa \u010das\u0165 m\u00f4\u017eete n\u00e1js\u0165 tu. V nej sme si povedali, \u017ee Ivy je n\u00e1stroj, ktor\u00fd sa ozna\u010duje ako tranzit\u00edvny mana\u017e\u00e9r z\u00e1vislost\u00ed, a \u017ee jeho hlavnou \u00falohou je pripravi\u0165 (fyzicky stiahnu\u0165 na po\u010d\u00edta\u010d) mno\u017einu s\u00faborov pod\u013ea ich z\u00e1vislost\u00ed definovan\u00fdch v repozit\u00e1ri. V tejto druhej \u010dasti sa pozrieme na [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-52","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":3,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/52\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/52\/revisions\/319"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}