abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 19:00 | Zajímavý projekt

    Na crowdsourcingové platformě Crowd Supply byla spuštěna kampaň na podporu open source biometrického monitoru ve tvaru hodinek HealthyPi Move. Cena je 249 dolarů a plánovaný termín dodání listopad letošního roku.

    Ladislav Hagara | Komentářů: 3
    24.5. 22:22 | Upozornění Ladislav Hagara | Komentářů: 9
    24.5. 17:44 | Nová verze

    Firma Murena představila /e/OS verze 2.0. Jde o  alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).

    Fluttershy, yay! | Komentářů: 0
    24.5. 14:33 | Zajímavý software

    Do 30. května lze v rámci akce Warhammer Skulls 2024 získat na Steamu zdarma hru Warhammer 40,000: Gladius - Relics of War.

    Ladislav Hagara | Komentářů: 1
    24.5. 13:33 | Nová verze

    HelenOS (Wikipedie), tj. svobodný operační systém českého původu založený na architektuře mikrojádra, byl vydán ve verzi 0.14.1. Přehled novinek v poznámkách k vydání. Vypíchnou lze nabídku Start. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 2
    23.5. 23:22 | Zajímavý software

    BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.

    Ladislav Hagara | Komentářů: 0
    23.5. 16:55 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.05. Přehled novinek i s náhledy a videi v oficiálním oznámení. Do balíku se dostalo 5 nových aplikací: Audex, Accessibility Inspector, Francis, Kalm a Skladnik.

    Ladislav Hagara | Komentářů: 10
    23.5. 12:55 | Nová verze

    Byla vydána (𝕏) nová verze 18.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    22.5. 23:44 | Pozvánky

    V neděli 26. května lze navštívit Maker Faire Rychnov nad Kněžnou, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    22.5. 16:33 | Nová verze

    Byla vydána nová stabilní verze 3.20.0, tj. první z nové řady 3.20, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou počáteční podporu 64bitové architektury RISC-V.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (85%)
     (3%)
     (6%)
     (5%)
    Celkem 661 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Apache Ant - jak na složité projekty

    20. 11. 2003 | Daniel Michalik | Programování | 11442×

    Ant je nepostradatelný nástroj při vývoji řešení postavených na Javě, neboť pomáhá plně automatizovat proces kompilace, balení, testování a distribuce produktu.

    Článek přináší doporučení (včetně kompletního kompilovatelného příkladu), jak navrhnout antovské skripty v případě složitějších projektů obsahujících více výsledných produktů provozovaných v různých konfiguracích, na kterých pracuje více vývojářů.

    Už se vám stalo, že jste si stáhli zdrojovou verzi nějakého populárního open-source produktu v Javě a po hodině marných pokusů o kompilaci jste to nakonec vzdali? Klíčem k tomu, abyste jako autoři ušetřili svým uživatelům podobné rozčarování, je návrh robustního build systému.

    Motivací k napsání tohoto článku je autorova zkušenost, že se nevyplácí šetřit čas na vytvoření kvalitního build systému. Tím spíše, pokud je součástí buildu také instalace zahrnující potenciálně nebezpečné operace, jako třeba vymazání databázových tabulek. Myslete na to, že kompilovat projekt mohou kromě vás také jiní programátoři nebo správci systému. Ušetřený čas na ledabyle odvedeném návrhu se vždy i s úroky zaplatí v pozdější fázi projektu. A to zrovna když se vám to bude nejméně hodit - když se něco stane nezvladatelným a je nutné provést refactoring (což v případě, že nejste autorem, může být krajně nevděčná práce).

    Cíle návrhu build systému pro typický projekt

    Obvykle výsledný produkt projektu obsahuje různé konfigurační soubory, moduly či data, které společně tvoří uníkátní konfiguraci. Záleží to na typu projektu a zvolené architektuře, ale nejčastěji to bude databázový driver, URL databázového připojení a nastavení úrovně logování. Pokud vytváříte k serverové aplikaci síťového GUI klienta (nejlépe s využitím JNLP a Java Web Start technologie), který komunikuje s aplikačním serverem, potřebuje klient znát IP adresu a nastavení poskytovatele adresářových služeb JNDI, se kterým se připojí ke komponentám nebo frontám aplikačního serveru.

    Díky dynamické povaze Javy mohou být dnešní systémy za běhu vysoce parametrizovatelné. Všechno je "pluggable" a "customizable". Pokud jste někdy procházeli konfiguračními XML soubory aplikačního serveru JBoss nebo XML soubory s deskriptory J2EE aplikace, tak víte, co to je za monstra. Nic proti tomu. Špatné však je, když je tím zbytečně zatěžován koncový uživatel, byť by to byl programátor.

    Technologie Java Web Start umožňuje pouhým otevřením odkazu v HTML stránce nainstalovat a bezpečně spustit plnohodnotnou desktopovou aplikaci. (Stáhne potřebné knihovny na disk a se svolením uživatele vytvoří na ploše a v nabídce programů zástupce pro spuštění. Při dalším spouštění pak ověřuje, zda na webu není novější verze a pokud ano, tak ji automaticky aktualizuje a spustí. To vše bez zásahu uživatele.) Pokud chceme s pomocí této technologie vytvořit naprosto bezúdržbovou aplikaci, musí být veškerá nastavení přibalena k jar souborům aplikace během buildu.

    Cíl je tedy jasný: pokud se rozhodnu vydat novou verzi, tak jediné, co si přeji udělat, je na své vývojářské stanici spustit z příkazového řádku povel ant deploy. Nic víc. Tečka. Žádné ruční balení, kopírování, žadná editace konfiguračních souborů, žádné opětovné konfigurování reinstalovaných produktů před či po spuštění.

    Proč? Důvody jsou nejméně dva. Za prvé, pokud se kompletně zautomatizuje vydávání verzí, může to provést kdokoliv a bez rizika opomenutí nějakého kroku. Za druhé, nemusí být na to čas: třeba vám v noci zavolá zákazník, že je kvůli chybě v systému ohrožena výroba a na kompletní výměnu systému máte spíše vteřiny než minuty.

    Zásady, které je dobré dodržet

    1. Dokumentujte

    Ant přímo vybízí k vytvoření alespoň minimální dokumentace k buildu, která má pro toho, kdo si projekt stáhne a bude kompilovat, naprosto zásadní význam. Dokumentace k build skriptu se zobrazí pomocí povelu:

    ant -projecthelp

    Výsledkem může být např. tento jednoduchý výstup:

    Buildfile: build.xml

    Ukazkovy build soubor pro vytvoreni jedne casti podprojektu,
    v tomto pripade klientske aplikace typu Hello World.

    (c) 2003, Daniel Michalik pro ABC Linuxu

    Main targets:

     clean     Odstrani soubory vznikle buildem.
     compile   Provede kompilaci java souboru.
     copyrsrc  Prikopiruje mezi kompilovane soubory dalsi runtime soubory.
     deploy    Zkopiruje vytvoreny produkt na webovy server.
     package   Zabali kompilovane class soubory do vysledneho baliku.
     prepare   Vytvori nezbytne adresare pro build.
     run       Vytvori a spusti produkt.

    Default target: package

    Vytvoření výše uvedené dokumentace je velmi snadné. Prvních pár řádků s obecnou informací o projektu se vytvoří ve skriptu pomocí XML značky description umístěné na počátku pod kořenovou značkou project:

    <project name="AbcKlient" default="package" basedir=".">
    <description>
    Ukazkovy build soubor pro vytvoreni jedne casti podprojektu,
    v tomto pripade klientske aplikace typu Hello World.

    (c) 2003, Daniel Michalik pro ABC Linuxu
    </description>

    V seznamu cílů se popis cíle vyskytne tehdy, obsahuje-li značka target příslušného cíle atribut description:

    <target name="deploy"
      depends="package"
      description="Zkopiruje vytvoreny produkt na webovy server.">

      <copy todir="${client.deploy.dir}">
        <fileset dir="${build.package.dir}"/>
      </copy>
    </target>

    2. Držte se zavedených konvencí

    Open source projekty používající Ant konvergovaly časem k určité formě strukturování a pojmenování cílů (targets) ve skriptech. Pokud můžete, držte se těchto osvědčených konvencí. Všichni, kdo budou váš skript spouštět, vám budou vděčni, když se bude skript chovat tak, jak jsou zvyklí.

    K standardním cílům by měl patřit cíl package, který vytvoří hotový zabalený produkt obsahující veškeré knihovny, spouštěcí skripty apod. Pro testování je ideální, pokud je takto zabalený produkt bez další instalace přímo spustitelný.

    Jiným často používaným cílem bude cíl deploy, který provádí instalaci produktu, ať již na aplikační server v případě J2EE aplikace nebo web server v případě JNLP klienta.

    3. Izolujte nastavení výsledné konfigurace

    Hlavní zásada zní: adresář src obsahující zdrojové kódy je nedotknutelný. Soubory vyžadující konkrétní nastavení (IP adresy, URL a různé další konstanty) by měly být vytvořeny ve formě šablon obsahujících proměnné, které se teprve v průběhu buildu nahradí konkrétními hodnotami.

    Podobně jako zdrojové kódy by měl být nedotknutelný také build skript. Ant umožňuje nastavovat hodnoty proměnných několika způsoby. Buď je to značkou <property name="..." value="..."> nebo textovým souborem s obsahem definovaných hodnot pomocí značky <property file="..." />. Přesuňte do textových souborů právě ty hodnoty, které očekáváte, že uživatel může měnit, a okomentujte jejich význam. Používáte-li např. jiný typ kompilátoru než je obvyklé (třeba jikes), přesuňte typ kompilátoru jako parametr do externího souboru. Zkrátka, ve skriptu nemají co dělat nastavení závislá na vašem systému.

    Pro konkrétní nastavení je dobré vytvořit v projektovém adresáři podadresář conf, který bude obsahovat konfigurační profily s hodnotami nastavení pro jednotlivá cílová prostředí. Jednotlivé konfigurační profily se pak přepínají pomocí jediného řádku v souboru build.properties v hlavním adresáři projektu. Podrobně si tuto techniku vysvětlíme v další části článku.

    4. Izolujte podprojekty

    Ačkoliv lze více podprojektů organizovat pomocí jediné hierarchie adresářů zdrojových kódů tříd a jediným sdíleným adresářem společných knihoven, nelze tento postup pro komplexnější projekty doporučit. Brzy totiž ztratíte přehled, které knihovny potřebuje ten který podprojekt a údržba build skriptu se záhy stane noční můrou.

    Z dlouhodobého hlediska je výhodnější, když má každý podprojekt svůj adresář knihoven, zdrojových kódů a svůj vlastní build skript. Zkrátka, je co nejvíc izolován od zbytku projektu. Jistou nevýhodou může být skutečnost, že některé společné knihovny jsou na více místech v projektovém adresáři, ale v praxi je tato nevýhoda spíše zanedbatelná.

    Pokud má každý podprojekt svůj build skript, je žádoucí vytvořit hlavní build skript, který zajistí hromadné vykonání skriptů jednotlivých podprojektů.

    V ideálním případě je izolace projektu dotažena až tak daleko, že projekt obsahuje vlastní kopii Antu. Jelikož se Ant neustále vyvíjí, nenastane situace, že projekt vyžaduje jinou verzi Antu, než máte v systému.

    Co příště?

    V dnešní části jsme si vysvětlili zásady, které je dobré dodržovat pro robustní návrh build systému. V další části článku se podíváme na reálný příklad build skriptů, které ilustrují, jak tyto zásady použít.

           

    Hodnocení: 38 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    20.11.2003 13:01 Leoš Literák | skóre: 74 | blog: LL | Praha
    Rozbalit Rozbalit vše abicko pouziva ant
    a jsem s nim moc spokojen :-)
    Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
    20.11.2003 13:34 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
    Rozbalit Rozbalit vše abicko pouziva ant
    Kdo nepoužívá Ant jako by nebyl... :)
    > Z dlouhodobého hlediska je výhodnější, když má každý > podprojekt svůj adresář knihoven, zdrojových kódů a > svůj vlastní build skript. tento postup ma vsak tiez svoje nevyhody, ktore sa prejavia hlavne pri velkom mnozstve projektov a podprojektov. 1.) pri distribucii zdrojovych kodov je potrebne distribuovat aj pouzite kniznice, co nafukne celkovu velkost zdrojoveho balika. 2.) Buildovacie scripty (build.xml) obsahuju postupy pre vykonavanie urcitych cinnosti. Ked mam viac projektov/podprojektov a chcem pridat novy, zmenit povodny ciel musim prejst vsetky build.xml a vykonat potrebne zmeny. Riesenim uvedenych problemov sa snazi byt Maven. Zavislosti na knizniciach ( ako aj vela dalsich dokumentacnych veci ) sa popisuje deklarativne v subore project.xml. V pripade potreby kniznic si ich maven stiahne do lokalnej cache z centralneho repository. Postupy ako vykonat dany ciel ( napr. kompilacia, deploy, vytvorenie dokumentacie, javadoc ... ) nie su sucastou projektu, ale su sucastou mavena. Presne povedane su realizovane cez plugin do mavena. Vytvorenych pluginov je velke mnozstvo, takze je z coho si vyberat. Dalsou vyhodou mavena je generovanie dokumentacie o projekte. Ukazkou ako taka dokumentacia vyzera su napr. domovske stranky projektu.. Polozky v casti "Overview" su udrziavane "rucne", "Project Info" je generovane na zaklade obsahu suboru project.xml, "Project reports" su rozne reporty generovane cez pluginy zo zdrojoveho kodu aplikacie. Ak si vsak myslite, ze teraz uz na ANT mozete zabudnut, nie je to celkom tak .... Maven je postaveny nad antom, pouziva jeho tasky.
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.