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

  1. 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.

  2. 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).

  3. 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 🙂

  4. 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ě.

  5. 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.

  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. 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.

  8. 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.

  9. 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.

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

    Jirka

  11. 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