9 komentáře “Co bych rád slyšel v září na CZJUG

  1. Zdravím,

    přesně na tato témata (a i další) chci ve své přednášce odpovědět. Takže děkuji za hozenou rukavici :-) Odpověď si, ale nechám až na svoji přednášku – přijďte jste zváni.

    Petr Ferschmann

  2. Pokud by byl záznam CZJUGu i na videu bylo by to super.
    ( Nejsu z Prahy – 5 hodin vlakem… :-( )

    Jirka

  3. Záznamy obvykle bývají – jen mají asi měsíční zpoždění (jak kdy). Za první rok CZJUGu (do prázdnin) jsou myslím už všechny. Já to mám naštěstí „jen“ 1,5 hodiny z Pardubic.

  4. Ohledně toho jednotného verzovaní, nemám to vyzkoušené protože na to stále jaksi nezbyl čas, ale kdy jsem si stím hrál a myslím že by to šlo udělat nějak tahkle. Nazveme naší devel verzi DEVEL-SNAPSHOT a všechny potomky potom odkazují na DEVEL-SNAPSHOT parenta, o verzovaní se potom postará release plugin, který nahrazí SNAPSHOT release verzí. Jako následující verzi potom zase musíme zadat DEVEL-SNAPSHOT, tím odbouráme nutnost přečíslovávat verze paranta i jeho potomků a všechno verzování se odahrává pouze na releasu. Možná že blafu ale myslím že by to takhle nějak šlo, ale jak říkám nikdy jsem to neodzkoušel.

  5. No problém spočívá v tom, že se mi nikdy nepodařilo rozjet (pravda, je to asi půl roku, co jsem to zkoušel naposledy) maven-release-plugin pro multiproject. Po checkoutu se rozjely nějak cesty a build failnul. Jinak si myslím, že pak by stačilo jen dát všem modulům i parentu v úvodu stejnou verzi a release plugin by se postaral o náležité zvednutí verze všech artefaktů. Ale to taky vařím z vody, protože jak říkám – v praxi se mi to nezadařilo.

  6. Zdravím,

    tak tedy zkusím trošku popostrčit správným směrem :-)

    Platí základní pravidlo „U Mavenu se multiprojekt skládá z více projektů“. To ale znamená, že mohu vycheckoutovat jen podadresář a přesto budu schopný projekt přeložit. Takže není něco jako adresář výš.

    Myšlenka je taková, že máte větší projekt a continuum vám pravidelně vše kompiluje a nahrává do vaší lokální snapshot repository. A vy buildíte všechno vůči ní. Když mi tohle došlo, tak mi téměř vše v Mavenu začalo fungovat :-)

    Neříkám, že toto je jediné a ideální řešení (pro mně to byla docela změna způsobu myšlení), ale dá se s tím celkem dobře sžít a teď už mi to ani nepřijde zvláštní.

  7. Ještě doplním, že continuum to může nahrát do repository až po tom, co je prošli testy.

    A pokud máte několik projektů s různými životními cykly (jak knihovny třetích stran tak ve vlastní firmě – např. „úžasný“ framework) tak je toto řešení celkem příjemné a dobré.

    Dříve jsme obvykle měli buď vše v jednom repository SVN/CVS a pokud něco bylo sdílené mezi více projekty byl to problém. Případně se prostě do projektu nahrál až výsledný JAR.

  8. To že multiprojekt = více projektů a co z toho vyplývá, si myslím, že jsem pochopil. Nemám s tímhle žádný problém. Chyba je (nebo třeba už je to opraveno) v tom maven-release-pluginu – ten je na adresářové struktuře závislý právě díky tomu, že se to checkoutuje z VCS (nebo si to alespoň myslím). Nebyl jsem schopný vydat hromadně release, pokud jsem spustil goaly na parent projektu – první (přípravná) fáze proběhla, ale když jsem spustil druhou, kde se provádí checkout do target složky mi to celé failnulo na tom, že se maven snažil volat release:perform někde, kde ty moduly vycheckoutované nebyly. Když jsem to volal jednotlivě pro každý modul, tak to samozřejmě fungovalo – ale bylo to pracné.

    To byl stav před půl rokem – je možné že s tím pluginem za tu dobu už pohnuli. Dám si domácí úkol a prověřím to, abych tady nedělal vlny zbytečně.

  9. Zdravím,
    vycházel jsem z textu „Po vycheckoutování mu ale nesedí relativní cesty k pom.xml jednotlivých modulů a celé to vyhoří.“.

    Maven v každém podprojektu vycheckoutuje do podadresáře target/checkout jen a pouze ten podprojekt.

    Takže moje otázka zní: byla v to pom.xml Ještě další závislost mezi jednotlivými pom.xml (např. pomocí relativePath – s tím jsem se setkal) a nebo to Maven nezvládl sám o sobě? (a s tím už jsem se nesetkal :-)

  10. No měl jsem dojem, že problém je v deklaraci toho parent pom.xml. Tam mám v deklaraci dejme tomu dva moduly:

    <modules>
    <module>test1</module>
    <module>test2</module>
    </modules>

    Maven očekává, že najde pom.xml pro tyto dva moduly v podložkách test1 + test2 složky, kde se nachází parent pom.xml. Pokud bych chtěl mít modul na stejné úrovni jako je složka parent pom.xml musel bych uvést:

    <modules>
    <module>test1</module>
    <module>test2</module>
    <module>../test3</module>
    </modules>

    Problém toho maven-release-pluginu byl myslím (pozor toto jsou vzpomínky půl roku staré) v tom, že po checkoutu do složky target, resolvoval plugin cesty vztažené k parent pom.xml ve „vývojové“ složce a ne ve složce „target“, kam si to celé vycheckoutoval. A na tom to myslím vyhořelo. A to i v případě, že ty moduly byly v podsložkách jako v prvním příkladě, co jsem uvedl (tedy žádné používání ../ v cestě a podobné hrůznosti).

  11. Díky – přesně stejný postup jsem zkoušel před necelým rokem a neprocházel mi – je možné, že v té době byl release plugin ještě v ranějším stádiu s chybkami.

    Věnoval jsem zopakování postupu asi hodinku a nějak jsem se zasekl na použití maven SCM pluginu – potřebuji z Windows komunikovat s CVS přes SSH s použitím privátního klíče. Což není zase až taková trivka, jak jsem si nejdříve myslel.

    Napojení na CVS je must-have precondition pro maven-release-plugin, takže než rozlousknu tohle, tak si to neozkouším. Škoda, že teď zrovna nemám moc času :( .

    Každopádně 3rojko, díky za reakci a článek.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>