Maven vs. Gradle

Re:Maven vs. Gradle
« Odpověď #15 kdy: 29. 11. 2020, 20:05:29 »
...
Napada me treba problem s maven profily jakozto jednorozmerneho pole. Nelze vytvorit dva (nebo i vice) nezavisle sety profilu a jednoduse je kombinovat. Jedine mit vypsanou kombinaci kazdy s kazdym coz je vcelku des.

Kolik profilu typicky v projektu mate? A na co je pouzivate? Treba je "zneuzivate" na neco co by slo resit jinak?

Konkretne jsem resil ovladani db skrze maven-liquibase-plugin. Tudis jsem chtel mit profily pro build javy a profily pro db. A mit moznost si je kombinovat dle libosti. To jest spustit mvn jako "k jave se chovej podle profilu a/b/c a k db podle profilu x/y/z". Proste mit db ovladanou pomoci jinych profilu nez samotnou java aplikaci. Muze to byt zneuzivani maven profilu... ale potom nechapu na co ten maven-liquibase-plugin je dobry.


luvar

  • ***
  • 249
    • Zobrazit profil
    • E-mail
Re:Maven vs. Gradle
« Odpověď #16 kdy: 29. 11. 2020, 20:06:27 »
Prosim, skuste dat vediet, co sa snaite profilmy riesit. Zvacsa nie je nic rozumne na projekte, co by sa mohlo profilmi riesit. Ak ich chcete mat viac paralelne zapnutych naraz, tak tam nie je ziaden problem. Staci vymenovat za prepinacom profilov a oddelit ciarkou. Daku sa aj aktivovat aj takto pekne napriklad https://stackoverflow.com/a/943474/3679328

PS: Za mna je maven build tool. Ma to vediet dodat build. Teda jar/war/docker img/zip/exe/... Nic ine. Vysledna vec ma byt vpodstate vzdy rovnaka (pre kazde pouitie/prostredie). Inak pojdete proti devops paradigme (kazdy build moze skoncit v produkcii). Akekolvek (casto risene profilom veci) parametrizacie projektu (adresy databazy, loglevel a podobne) maju byt riesene az v runtime (respektive pri instalacii napriklad). Gradle je fajn, ale uciaca sa krivka noveho cloveka je o rad horsia. Spravit ale korektne a poriadne maven build moze vyzadovat tiez dost znalosti...

Re:Maven vs. Gradle
« Odpověď #17 kdy: 29. 11. 2020, 20:09:37 »
Napada me treba problem s maven profily jakozto jednorozmerneho pole. Nelze vytvorit dva (nebo i vice) nezavisle sety profilu a jednoduse je kombinovat. Jedine mit vypsanou kombinaci kazdy s kazdym coz je vcelku des.

Maven snad neumí podmíněné zpracování? Nacpal bych to do jednoho profilu a parametricky se přepínal mezi větvemi.

Nerikam ze neumi. Jen me ty profily u mavenu prijdou takove dosti divne / omezene. Ale muze to byt i moje neznalost problematiky. Popravde nechapu co myslis tema větvemi - jako v Gitu?

Re:Maven vs. Gradle
« Odpověď #18 kdy: 29. 11. 2020, 20:26:08 »

Proc beres podporu v IDE jako vyhodu Mavenu? Podle me jsou oba nastroje tak rozsirene, ze to vyjde uplne na stejno - podporad je skvela.

Proc se bere ze Gradle je nestandardni? Ze novy lidi maji problem udelat build, spustit testy? Vzdyt filozoficky je to uplne stejne. V jadru je standardizovany lifecycle. Kazdy kdo zna Maven/Gradle bude umet spustit testy v Maven/Gradle.
Ant prakticky vubec neznam. Nikdy jsem v tom nedelal. Ale ze by bylo potreba si psat cely build skript v Gradle od zacatku? To snad ne. V mavenu nastavim maven-compiler. V gradle nastavim java plugin. A je to. Me to prijde v obou pripadech to same. V cem je rozdil ze si v Gradle musim psat cely build skript od zacatku?

Zalezi jak moc custom chces byt. Ak sa chces drzat standardov, tak IMO staci Maven. Ak chces viac customizovat (zazil som aj to, ze bol problem standardny directory layout), tak tooly problem mat mozu, lebo s niektorymi vecami nerataju...aj ked to uz bolo par rokov dozadu.
Ad spustanie buildu a testov - kto pozna Maven, tak ich bude vediet spustit. U Gradlu zalezi na tom, jak moc velku fantaziu autor ma a je mozne, ze sa budes musiet naucit nazov targetu pre dany projekt, co je zbytocne.
Ad pisanie build skriptu - ak nechces nic custom, nepotrebujes Gradle, ak chces custom, tak si pises build skript.

Kit

  • *****
  • 853
    • Zobrazit profil
    • E-mail
Re:Maven vs. Gradle
« Odpověď #19 kdy: 29. 11. 2020, 20:38:58 »
Napada me treba problem s maven profily jakozto jednorozmerneho pole. Nelze vytvorit dva (nebo i vice) nezavisle sety profilu a jednoduse je kombinovat. Jedine mit vypsanou kombinaci kazdy s kazdym coz je vcelku des.

Maven snad neumí podmíněné zpracování? Nacpal bych to do jednoho profilu a parametricky se přepínal mezi větvemi.

Nerikam ze neumi. Jen me ty profily u mavenu prijdou takove dosti divne / omezene. Ale muze to byt i moje neznalost problematiky. Popravde nechapu co myslis tema větvemi - jako v Gitu?

V GNU make si nadefinuji různé vstupní body, každý definuje, jak se má výsledek sestavit. Maven to má také. Doporučuji, aby se každý výsledek odlišného buildu jmenoval jinak, ať se ti to nepoplete.

Větvemi jsem mínil tvé sety profilů, které nacpeš všechny do jediného profilu. Tím se zbavíš duplicit.


Re:Maven vs. Gradle
« Odpověď #20 kdy: 29. 11. 2020, 22:03:20 »
Zalezi jak moc custom chces byt. Ak sa chces drzat standardov, tak IMO staci Maven. Ak chces viac customizovat (zazil som aj to, ze bol problem standardny directory layout), tak tooly problem mat mozu, lebo s niektorymi vecami nerataju...aj ked to uz bolo par rokov dozadu.
Ad spustanie buildu a testov - kto pozna Maven, tak ich bude vediet spustit. U Gradlu zalezi na tom, jak moc velku fantaziu autor ma a je mozne, ze sa budes musiet naucit nazov targetu pre dany projekt, co je zbytocne.
Ad pisanie build skriptu - ak nechces nic custom, nepotrebujes Gradle, ak chces custom, tak si pises build skript.

Me prave prijde skvele, ze muzu vyuzit standard, ktery mi ve vetsine pripadu staci a je tou nejlepsi volbou. Ale kdyz potrebuju nahodou neco custom, tak nemusim ohybat maven, nebo vymyslet nejake kulisarny, abych toho docilil.

No a s tou fantazii autora. Tak budto to ma nejaky smysl udela custom a nebo nema. Proc se jako vyhoda Mavenu bere, ze to potlacuje fantazii autora a vynucuje to podrizeni buildu moznostem Mavenu, vlastne moznostem dostupnym maven pluginu? Vzdyt toho sameho cloveka pak nechame programovat a tam uz mu jako verime, ze to udela dobre? Vzdyt samotnou tvorbou programu muze napachat daleko vetsi skody. Nebo mu neverime, ale proste nikoho jineho nemame, tak nam nic jineho nezbyva nez mu verit?

Re:Maven vs. Gradle
« Odpověď #21 kdy: 29. 11. 2020, 22:10:54 »

V GNU make si nadefinuji různé vstupní body, každý definuje, jak se má výsledek sestavit. Maven to má také. Doporučuji, aby se každý výsledek odlišného buildu jmenoval jinak, ať se ti to nepoplete.

Větvemi jsem mínil tvé sety profilů, které nacpeš všechny do jediného profilu. Tím se zbavíš duplicit.

To je zajimavy pristup. S GNU make jsem se pri programovani javy jeste nesetkal (pokud se neresilo kooperace s C++). No nevim jestli by to obstalo jako standardni pristup  :D

Re:Maven vs. Gradle
« Odpověď #22 kdy: 29. 11. 2020, 23:58:17 »
Popište co má ten váš projekt řešit a co chcete řešít v rámci buildu - zkušenější vám pak řeknou, jak to řešit v Maven a Gradle a vy se budete moci rozhodnout co a jak. Pokud se ale ptáte jen takto obecně, tak to raději nechte na seniorních lidech z týmu. Za mě se má build systém postarat hlavně o závislosti a výslednou spustitelnou podobu programu a to umí Maven dobře a s přehledným pom.xml.

Ale pokud chcete řešit i  nasazení, integrační testy, migrační skripty a podobně, tak máte mnohem větší téma než zda volit Maven či Gradle.

Kit

  • *****
  • 853
    • Zobrazit profil
    • E-mail
Re:Maven vs. Gradle
« Odpověď #23 kdy: 30. 11. 2020, 01:50:05 »

V GNU make si nadefinuji různé vstupní body, každý definuje, jak se má výsledek sestavit. Maven to má také. Doporučuji, aby se každý výsledek odlišného buildu jmenoval jinak, ať se ti to nepoplete.

Větvemi jsem mínil tvé sety profilů, které nacpeš všechny do jediného profilu. Tím se zbavíš duplicit.

To je zajimavy pristup. S GNU make jsem se pri programovani javy jeste nesetkal (pokud se neresilo kooperace s C++). No nevim jestli by to obstalo jako standardni pristup  :D

GNU make se na Javu moc nehodí, tam je doma Ant nebo Maven. Pro jiné jazyky, např. C, C++, PHP a mnoho dalších je GNU make vhodnější. Má však jednu významnou nevýhodu - závislost na platformě. To ho poněkud diskvalifikuje ve smíšených týmech. Proto ho používám pro privátní buildery, které mi tak se zbytkem týmu nekolidují.

Re:Maven vs. Gradle
« Odpověď #24 kdy: 30. 11. 2020, 08:11:51 »
Popište co má ten váš projekt řešit a co chcete řešít v rámci buildu - zkušenější vám pak řeknou, jak to řešit v Maven a Gradle a vy se budete moci rozhodnout co a jak. Pokud se ale ptáte jen takto obecně, tak to raději nechte na seniorních lidech z týmu. Za mě se má build systém postarat hlavně o závislosti a výslednou spustitelnou podobu programu a to umí Maven dobře a s přehledným pom.xml.

Ale pokud chcete řešit i  nasazení, integrační testy, migrační skripty a podobně, tak máte mnohem větší téma než zda volit Maven či Gradle.

To je prave problem to nechat na seniornich lidech. Trochu ty seniorni java backend programatory podeziram, ze znaji jen svatou trojici - java8 / maven / spring a tim koncej. Vyhovuje jim to. Coz by bylo dobre... Jen se bojim, ze jim to vyhovuje, protoze v tom delaji dlouho... Ja jsem v teto oblasti (java backend) pomerne novy, ale vyrobe SW se uz venuju docela dlouho a odzkousel jsem si mnoho jinych veci.

Jinak jo. Resim to kompletne. Vlastne neresim vcelku nic konkretniho. Spise se snazim pochopit proc ti seniorni java backend vyvojari tak trvaji na urcitych vecech, kdyz se ty veci daji delat jednoduseji, elegantneji.

Re:Maven vs. Gradle
« Odpověď #25 kdy: 30. 11. 2020, 08:18:28 »

Me prave prijde skvele, ze muzu vyuzit standard, ktery mi ve vetsine pripadu staci a je tou nejlepsi volbou. Ale kdyz potrebuju nahodou neco custom, tak nemusim ohybat maven, nebo vymyslet nejake kulisarny, abych toho docilil.

No a s tou fantazii autora. Tak budto to ma nejaky smysl udela custom a nebo nema. Proc se jako vyhoda Mavenu bere, ze to potlacuje fantazii autora a vynucuje to podrizeni buildu moznostem Mavenu, vlastne moznostem dostupnym maven pluginu? Vzdyt toho sameho cloveka pak nechame programovat a tam uz mu jako verime, ze to udela dobre? Vzdyt samotnou tvorbou programu muze napachat daleko vetsi skody. Nebo mu neverime, ale proste nikoho jineho nemame, tak nam nic jineho nezbyva nez mu verit?

Tu to uz naraza na tie skusenosti. Pracoval som v (malych) jednotkach (kusov) timov, kde boli sami kompetni ludia a nebol problem. Vetsinova skusenost je ale, ze timy su namixovane rozne seniornymi a kompetentnymi ludmi.
Potom sa stava, ze ked ten clovek nepozna dobre riesenie v podobe nejakej konfiguracie alebo pluginu, tak si ho proste dobastli v nejakom build skripte. Okrem toho vela ludi ma z nejakeho dovodu ovela nizsie standardy na kvalitu kodu u build skriptov nez u aplikacneho kodu, takze sa to moze zvrtnut (a aj zvrtne).
Mozes argumentovat s code review a ano, dost casto sa tam veci odfiltruju, ale niekedy na to nie je cas, pripadne mas seniorov na dovolenke a tieto veci sa tam zanesu.
Takze v pripade menej kompetentneho timu je obmedzenie moznosti dobra vec. A ako som pisal predtym, ak chces nieco viac, nemusis to nutne prepisovat do ineho toolu, ani si pisat vlastny plugin, tooly sa proste daju kombinovat.

L..

  • ****
  • 321
    • Zobrazit profil
    • E-mail
Re:Maven vs. Gradle
« Odpověď #26 kdy: 30. 11. 2020, 08:58:13 »
Spise se snazim pochopit proc ti seniorni java backend vyvojari tak trvaji na urcitych vecech, kdyz se ty veci daji delat jednoduseji, elegantneji.

Hele, napsal jsi sem už deset příspěvků. A zatím ani jeden konkrétní příklad těch věcí, co by (ve vašem projektu) Gradle dělalo "jednodušeji, elegantněji".

Re:Maven vs. Gradle
« Odpověď #27 kdy: 30. 11. 2020, 09:07:53 »
Používám hlavně gradle, protože vytváříme víc než jen jar soubory. Vytváříme instalační archiv izpack a je tam spousta věcí, které potřebujeme automatizovat. Pokud má celý projekt jen jar výstupy, které se nahrají do nějaké repository, tak je maven asi ok.

U nás byl třeba problém se závislostma. Některé závislosti třetích stran musí do tomcat/lib, některé tam nejsou potřeba, tak jsou ve war/lib.
Pokud je nově závislost potřeba v tomcat/lib, ale je už použita ve war, tak se musí při vytváření instalačního archivu zařadit mezi jar soubory, které se kopírují do tomcat/lib. Toto jsem byl schopen v gradle automatizovat. Dřív (maven 1 ) se to udžovalo ručně ...

Pokud budou trvat na maven, tak jim to "svěřte", ať dělají údržbu buildovacího systému oni.

Na produktu, kde se od maven 1 nehneme jsem začal používat gradle aspoň na vývojářské tasky. project.xml (nový maven to má v pom.xml) načítám xml a parsuju si závislosti pro gradle ručně. Tím zajistím, že jsou všude stejné závislosti a můžu využívat výhod gradle aspoň při vývoji.

Gradle je super, když někdo dojde, že potřebuje něco trochu jinak. Je to otázka na pár minut. U Mavenu 2 jsem narážel na problémy, že bylo potřeba měnit naše postupy a přizpůsobovat se Mavenu, to bylo těžké obzvlášť, když na nás navazoval někdo další a nechtěl dělat změny ...
Gradle má konvence, jako Maven, ale je možné je porušovat.

Umí už Maven paralelní build tak jako Gradle? Toto není k flameware, u Mavenu2 a novější jsem jen uživatel, který sem tam něco builduje. Může to být ten argument, který hledáte, že parallel build v gradle dokáže dost šetřit čas. Build process se nám podařilo díky paralelnímu buildování výrazně zredukovat.

Další fičura v Gradle je inkrementální build, kde se builduje jen to, co se změnilo. Toto dokáže redukovat běh buildu na sekundy i když plný build běží třeba i několik minut.

Další věc, kterou využíváme, je možnost kombinovat jednotlivé tasky, jak jsou právě potřeba. Nevím, jestli mvn profily dokážou být až tak flexibilní.

Asi bych nechal lidi, kteří budou ten build udržovat, ať si vyberou. Přepsat se to dá vždycky a nemyslím si, že to je tak časově náročné. Náročné je to jen tehdy, pokud nový build system neznáte.

Re:Maven vs. Gradle
« Odpověď #28 kdy: 30. 11. 2020, 13:09:16 »
To je prave problem to nechat na seniornich lidech. Trochu ty seniorni java backend programatory podeziram, ze znaji jen svatou trojici - java8 / maven / spring a tim koncej. Vyhovuje jim to. Coz by bylo dobre... Jen se bojim, ze jim to vyhovuje, protoze v tom delaji dlouho... Ja jsem v teto oblasti (java backend) pomerne novy, ale vyrobe SW se uz venuju docela dlouho a odzkousel jsem si mnoho jinych veci.

Nevěřím, že by neznali Gradle - Gradle není žádná hipsteřina. Pokud by znali jen java 8, Maven a Spring tak je to pro projekt IMHO problém. Jako ne že by nemohli být užiteční, ale přibral bych do týmu ještě někoho dalšího, kdo má up-to-date znalosti a kdo pomůže, aby byl kód přiměřeně moderní.

Proč to ale neřešíte přímo s nima?

Re:Maven vs. Gradle
« Odpověď #29 kdy: 30. 11. 2020, 13:41:28 »
Mihnul sem se kolem projektu kde meli na confluence na titulni strance pro vyvojare napsano: Pokud lehne build tak pouzijte tyhle prikazy na pozabijeni vsech gradle deamonu a podprocesu ktere to vytvorilo a zkuste to znova.
A jeden z vyvojaru tam mel napsanej script v antu kterej presne tohle delal.... :-)

A jeste si pamatuju projekt kde se poustel script kterej poustel maven... ten vnitrne poustel pomoci antrun pluginu ant.... ten sam poustel nekolik bash a perl scriptu... jeden z tech perl scriptu myslim generoval a poustel nejaky make fily...  a jeden z tech scriptu dokonce znova poustel maven...
A ja mel na starosti to znova uchodit po migraci repozitaru  a build serveru.... Krasne straveny tyden :-D

Pointa.... ani presne nevim...