Ahoj, my pouzivame pro deleni zdrojovych kodu tri zakladni organizacni jednotky - library, product line a project. Kazdy konkretni "item" dane kategorie sestava z jednoho ci vice jaru ktere ho tvori. Liby jsou obecne systemove knohovny a frameworky bez konkretni business funkcnosti, ale zapouzdrujici nejake systemove funkce - pristup do databaze, apod... Jedna knihovna muze pouzivat jinou knihovnu, nicmene cyklicke odkazy nejsou povoleny. Produktove linie jsou knihovny se specialni business funkcnosti, vztahujicimu se ke konkretnimu nicmene zobecnitelnemu "business" problemu. Produktova linie muze vnitrne pouzivat obecne knihovny nebo jine produktove linie. Cyklicke odkazy mezi produktovymi liniemi nejsou povoleny Projekt pak znamena jednu konkretni implementaci, jeden konkretni vysledny produkt (napr. pro jednoho konkretniho zakaznika s jeho specifiky, apod.) Projekt muze pouzivat (v instalacnim setu obsahovat) jak obecne knihovny, tak i produktove linie, projekty vzajemne se ale pouzivat nesmi.Prirozene, pokud je nejaka funkcnost ktera se ma chovat jinak na konkretnim projektu, muze byt nutne to zohlednit nejakou konfiguracni moznosti v produktove linii, nekdy pomuze zmena factory (resp. zmena konfigurace u aliasu objektu, vytvareneho pod timto obecnym aliasem v nadrazene produktove linii tak aby smeroval na zmenenou implementaci)... Zda se nam, ze to docela vyhovuje sdileni zdroju i v pripade jinych programovacich jazyku a ruznych typu projektu. Diky tomuto deleni je mozne vzdy separatne otestovat uvedene komponenty nezli se poskladaji dohromady (kazdy jar s "produktivnimi" tridami ma i sveho partnera s "develop" tridami, kde jsou m.j. JUnit testy apod.). Konkretne v Jave delime pak projekty na vrstvy - prezentacni vrstva (pl), fasady business vrstvy (bl facade) a jadro business vrstvy (bl core) a vrstvu pristupu k datum (dal) - nadrazena vrstva smi pouzivat vzdy jen podrazenou - ale to je asi celkem bezna zalezitost. Pokud se tyka verzovani, i kdyz Subversion nepouzivame (nas VCS neumi historii adresaru coz je pri javovskem strukturovani docela problem), pouzivame obecne pouzitelny princip - verzujeme jednotlive jary pri jejich buildu automaticky antem a dohromady je pak oznacime labelem ve VCS - pak jsou vsechny jary spadajici k danemu produktu oznacene jednim labelem. Vnitrne jary pak v manifestu obsahuji knihovny i s verzemi, ktere je nutno mit, aby dana funkcnost korektne fungovala (knihovny i s jejich verzemi se kterymi byla dana knihovna zkompilovana a tedy i otestovana). Protoze se vytvari pro jistotu vzdycky i jary se zdrojaky a s dokumentaci dane verze plus v pripade potreby jdiff pro rozdilovou dokumentaci a to vse se pak oznacuje i labelem ve VCS, mame jistotu ze i v pripade uzivatelske nebo systemove chyby VCS jsme schopni zrekonstruovat odpovidajici stav (resp. mame ho dvojmo - jednou primo jako verzi zdrojovych souboru primo ve VCS a jednou jeste v jaru vzdy pro danou verzi). Build antem pak umi i prekompilovat v pripade potreby celou kaskadu vzajemne se pouzivajicich podprojektu (jaru) - jeste tedy se ty jary musi rucne checkinovat a checkoutovat, ale to se obecne da taky zvladnout automaticky - tim ze se verzovani posunuje v praxi z urovne trid na uroven jaru se cela vec docela zjednodusuje. Samozrejme se snazime mit od jednoho produktu co nejmene verzi, nastesti nas prilis netrapi muset delat paralelni vyvoj nove funkcnosti (nepocitam opravy) pro vice verzi jednoho produktu, to je celkem malokdy a snad se tomu da temer vzdy administrativne predejit... Nicmene pokud je to nutne napr. pro jednoho zakaznika udelat nejakou zmenu specifickou a narychlo, melo by to zasahnout jen jeho projekt a ostatni projekty to snad nezasahne. Tolik teorie :-). Ahoj, Artur.----- Original Message ----- From: "Benda Lukas" <[EMAIL PROTECTED]>To: "Java" <konference@java.cz> Sent: Tuesday, October 10, 2006 6:04 PM Subject: Re: OT: Ako a kde ukladat zakaznicke customizacie vo VCS?Asi je to otazka poctu zakazniku, firemni politiky a schopnosti daneho zarizeni. Ale ja resim, vse pomoci parametru, tudiz, aplikace umi vzdy vse jen je nutno ji nastavit tak aby to delala. Je sice pravda, ze odmazani kusu kodu, nebo prepsani je casove mene narocne, ale vetsinou tu upravu casem chce i nekdo jiny a hlavne nemusim pro kazdeho zakaznika delat zvlast kompilaci. Ty parametry jsou v XML souboru nastavene pres spring. Mam i zarizeni (ctecka carovych kodu), ktera ma ruzna omezeni a tam se bohuzel musim uchylovat prave k specialnimu programu pro kazdeho zakaznika, ale musim rict ze mi to velmi nevyhovuje. Nejhorsi je kdyz prijdu k novemu potencialnimu zakaznikovi a predvadim mu schopnosti onoho zarizeni a pri predvadeni nejake Cool funkce zjistim, ze ta je ve verzi pro jineho zakaznika nez mam prave nahrano v ctecce, to by mne vzdycky mohl cert urvat. Lukas "benzin" Benda ([EMAIL PROTECTED]; http://benzin.bloguje.cz) Java a Delphi programator PHP a JavaScript skrypter Tvurce databazovych aplikaci A "cestinarsky" ignorantZdravim! Moja otazka sa netyka priamo javy, preto som ju oznacil OT, ale svyvojomvelmi uzko suvisi a mnohi z vas tento problem riesili a verim ze aj vyriesili. Mame projekt, ktory obsahuje niekolko standalone javovskych modulov,t.j.standalone aplikacii, web aplikaciu a nejaky core, ktory je poskytovany modulom ako kniznica (jar). Problem je, ze aplikaciu je potrebne pre jednotlivych zakaznikov customizovat. Zakaznikov nie je velke mnozstvo (radove jednotky), ale pre kazdeho z nich sa robia upravy, ktore su len pre neho. Tieto customizacie su od loga a farbiciek v css webovej aplikacie, cez defaultne jazykove mutacie, samostatne schemy v DB az po upravy zdrojoveho kodu, ked napr. pre zakaznika X mozu byt baliky (v zmysle java packages) A, B.A a B.B, pre zakaznika Y to mozu byt B.B a C, etc. Problem je, ako udrziavat jednotlive customizacie vo VCS (konkretne pouzivame Subversion). Customizacie by mali byt dostatocne oddelene od core, ale zaroven by malo byt co mozno najjednoduchsie checkoutovat, buildovat, instalovat a testovat verziu pre kazdeho zo zakaznikov. Takze otazka je: Ako oddelujete zakaznicke customizacie od produktu a ako ichvpripade potreby na projekt aplikujete? Vdaka za rady a napady. J.
Anebo se na to da rict, pouzivejte mavena :)) Taky jsem se snazil tohle
vsechno udelat v antu, ale pak jsem si nainstaloval mavena a ten presne
to co popisujete dela vlastne automaticky, paklize neurcite jinak. Takze
se vase praxe jevi jako spravna :))
- Re: OT: Ako a kde ukladat zakaznicke cu... Benda Lukas
- Re: OT: Ako a kde ukladat zakaznic... Jozef Babjak
- Re: OT: Ako a kde ukladat zaka... Artur Linhart - Java Communication