Maven vs. Gradle

Maven vs. Gradle
« kdy: 29. 11. 2020, 09:02:07 »
Pripad - potkalo se vice lidi (kteri se temer neznaji) na novem projektu. Ti zkusenejsi a s vetsi vahou hlasu jsou pro Maven. Gradle vesmes neznaji. Prijde jim nebezpecna flexibilita kterou Gradle nabizi. Me to naopak prijde jako ohromna vyhoda a velmi nerad bych se po dlouhe dobe vracel zpet k Mavenu. Uz jsem vystridal nekolik build nastroju a vzdy se mi pracovalo lepe s takovym, co pouzival primo programovaci jazyk. Nemate nejake tipy jak takove lidi presvedcit? Vidi to nekdo jinak?


Re:Maven vs. Gradle
« Odpověď #1 kdy: 29. 11. 2020, 09:27:38 »
Já v Javě a v její ekosystému nedělám, jen okrajově, ze zájmu (Kotlin, Scala), ale vidím to stejně.
Mohl by jste jim připomenout jak <ironie>krásné</ironie> je XML. Věřím, že když si zkusí Gradle (doporučuji Kotlin Script namísto Groovy), že se jim ke XML vracet chtít nebude.

Re:Maven vs. Gradle
« Odpověď #2 kdy: 29. 11. 2020, 10:33:12 »
Pokud neplánuješ "programovat" build 4 hodiny denně, tak je to úplně jedno. Hádat se kvůli buildu, když ještě nikdo nenapsal ani řádek, je trochu předčasné.

Kit

  • *****
  • 574
    • Zobrazit profil
    • E-mail
Re:Maven vs. Gradle
« Odpověď #3 kdy: 29. 11. 2020, 10:41:24 »
Mohl by jste jim připomenout jak <ironie>krásné</ironie> je XML.

Proč ta ironie? XML _je_ krásné.

L..

  • ***
  • 105
    • Zobrazit profil
    • E-mail
Re:Maven vs. Gradle
« Odpověď #4 kdy: 29. 11. 2020, 12:18:20 »
Nemate nejake tipy jak takove lidi presvedcit?

Jednoduše. Najdi jednu nebo několik věcí v projektu, které se s Gradle dají vyřešit mnohem jenodušeji / lépe, než s Mavenem.


Re:Maven vs. Gradle
« Odpověď #5 kdy: 29. 11. 2020, 12:40:15 »
Kritérium je, myslím, poměrně zřejmé: budete skutečně vyvíjet nějaký buildscript? Budete skutečně potřebovat něco, na co není standardní (a dobře fungující) maven plugin?

Pokud ano, tak je volba jasná - gradle. Psát si vlastní maven plugin je většinou overkill a pokusy o psaní scriptů v pom.xml jsou jasným znakem začátečníků a šílenců.

Pokud ne, tak přichází do hry další aspekty - co kdo zná (a na co je zvyklý), jaké další nástroje se používají - především IDE a CI. Pokud někteří z těch lidí používají "alternativní" IDE (tj. ne Idea) a pokud buildserver nemá dobrý plugin pro gradle (ale má pro maven), tak budete X let řešit brblání, žbrblání a nadávání na "frikulíny" a jejich "kurvítka" (další termíny naleznete na dfens-cz.com).

Jo a rozhodně varuji před argumentem "xml je fuj", to je nejlepší způsob jak se zdiskreditovat.

Re:Maven vs. Gradle
« Odpověď #6 kdy: 29. 11. 2020, 13:49:19 »
...
 Me to naopak prijde jako ohromna vyhoda a velmi nerad bych se po dlouhe dobe vracel zpet k Mavenu.
...

Tak bych zacal tady... Kdyz se nechces vracet tak videl/zazil nejaky problem s mavenem.
Zkus udelat minimalni priklad, ktery ho ukaze.
A pak ukazat jak to krasne vyresi gradle.

Pak se zamysli, jestli je to relevantni pro vas novy projekt a jestli neni sance to vyresit jeste elegantneji.

A pak to ukaz kolegum( a treba i nam) a uvidis co z toho bude...

A hlavne se tim moc netrap... ono je to totiz skoro jedno vzhledem k tomu jak casto je do toho potreba sahat...

Re:Maven vs. Gradle
« Odpověď #7 kdy: 29. 11. 2020, 17:22:38 »
Pokud má build proces umět jen běžné standardní věci, je to celkem jedno. Kouknul bych u obou na podpora v IDE a šel cestou nejmenšího odporu. Osobně používám Maven - mám jeden pom.xml který dělá co potřebuju a ten používám všude. Jak to přesně funguje, to popravdě řečeno netuším.

Konfigurovat build proces bych stejně nechal dělat nějakého zkušenějšího kolegu, tak ať si vybere spíš on.

Re:Maven vs. Gradle
« Odpověď #8 kdy: 29. 11. 2020, 17:54:53 »
Pokud neplánuješ "programovat" build 4 hodiny denně, tak je to úplně jedno. Hádat se kvůli buildu, když ještě nikdo nenapsal ani řádek, je trochu předčasné.

Zmenit jiste veci v pozdejsich fazich projektu muze byt pomerne drahe. A build tool je jednou z nich. Delame zakazkovy vyvoj a do takove zmeny nikdo neinvestuje.

Re:Maven vs. Gradle
« Odpověď #9 kdy: 29. 11. 2020, 18:15:33 »
Kritérium je, myslím, poměrně zřejmé: budete skutečně vyvíjet nějaký buildscript? Budete skutečně potřebovat něco, na co není standardní (a dobře fungující) maven plugin?

Pokud ano, tak je volba jasná - gradle. Psát si vlastní maven plugin je většinou overkill a pokusy o psaní scriptů v pom.xml jsou jasným znakem začátečníků a šílenců.

Pokud ne, tak přichází do hry další aspekty - co kdo zná (a na co je zvyklý), jaké další nástroje se používají - především IDE a CI. Pokud někteří z těch lidí používají "alternativní" IDE (tj. ne Idea) a pokud buildserver nemá dobrý plugin pro gradle (ale má pro maven), tak budete X let řešit brblání, žbrblání a nadávání na "frikulíny" a jejich "kurvítka" (další termíny naleznete na dfens-cz.com).

Jo a rozhodně varuji před argumentem "xml je fuj", to je nejlepší způsob jak se zdiskreditovat.

To je prave ono. Ono casem se narazi na problem, ze na neco standardni maven pluginy nestacej a zacnou v projektu pribyvat shell skripty, a nakonec se zacne skriptovat i v predpisu pro build server (mam na mysli soubor jako Jenkinsfile a ruzne ekvivalenty). Takze se neda jednoduse migrovat projekt na jiny build server.

Re:Maven vs. Gradle
« Odpověď #10 kdy: 29. 11. 2020, 19:13:26 »
...
 Me to naopak prijde jako ohromna vyhoda a velmi nerad bych se po dlouhe dobe vracel zpet k Mavenu.
...

Tak bych zacal tady... Kdyz se nechces vracet tak videl/zazil nejaky problem s mavenem.
Zkus udelat minimalni priklad, ktery ho ukaze.
A pak ukazat jak to krasne vyresi gradle.

Pak se zamysli, jestli je to relevantni pro vas novy projekt a jestli neni sance to vyresit jeste elegantneji.

A pak to ukaz kolegum( a treba i nam) a uvidis co z toho bude...

A hlavne se tim moc netrap... ono je to totiz skoro jedno vzhledem k tomu jak casto je do toho potreba sahat...

Popravde nejsem zadny Maven expert. Na pozici java backend developer jsem relativne kratce a projekty jsem dosud spise prebiral nez neco tvoril. Ale trapi me to hodne. Protoze to co prebiram je plne Maven + skripty + dalsi balast. A travim upravou toho, aby to slo jednoduse zbuildit/rozebehnout/podporovat/deployovat dosti casu.

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.

Re:Maven vs. Gradle
« Odpověď #11 kdy: 29. 11. 2020, 19:27:44 »
Mam rozsiahle skusenosti s vyvojom v Jave, Maven pouzivam skoro celu dobu a s Gradlom mam tiez skusenosti.

Na zaciatok by som odporucal pocuvat rady skusenejsich kolegov - ked su za jedno z rieseni, vychadza to z nejakych skusenosti a ked ich nevies presvedcit, teda nemas argumenty, tak by som sa riadil ich radami, kym tie skusenosti nenaberies.

K vyhodam a nevyhodam jednotlivych toolov:

Maven
-------
+ je to standardizovany nastroj, ktory ma velku podporu IDE a ked sa drzis standardu, tak vsetko funguje a nemas problem (bohuzial si casto ludia mylne myslia, ze ich problem je specialny a do standardu sa nevojdu a potom si len hadzu klacky pod nohy a maju problem - osobne som na jednom projekte stretol)
+ standard znamena, ze novi ludia hned vedia, ako projekt zbuildit, pustit testy etc. - nemusia sa ucit ako zbuildit zrovna ten tvoj projekt a pri prechode na iny projekt tieto vedemosti dumpnut do /dev/null
- je to build tool - ak potrebujes cosi navyse, tak to musis vyriesit inac (napr shell skript alebo spominany gradle - da sa kombinovat, nie je to bud/alebo)
- ak mas naozaj specificky problem (nepravdepodobne ale stat sa moze), tak je to neflexibilne riesnie

Gradle
--------
+ kedysi bol marketovany primarne ako automation tool (ktory zvladal buildit) - takze za mna flexibilny skriptovaci nastroj s JVM jazykom a kvantom kniznic, ktore sa daju pouzit
- ako v dobach antu - pises si cely build skript od zaciatku a co projekt, to inac vyzerajuci skript a ludia sa musia ucit pustat nieco uplne ine
- videl som pouzitie v rukach nedostatocne skusenych ludi a po par rokoch sa to moze cele zahodit a napisat znovu, lebo nikto netusi, co ta vec vlastne robi (ked sa niekto snazi, tak aj maven dokaze byt neprehladny, ale gradle moze byt peklo)


Takze u normalnych projektov u mna urcite Maven, pripadne doplnit niecim dalsim pre extra veci.

Re:Maven vs. Gradle
« Odpověď #12 kdy: 29. 11. 2020, 19:35: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.

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

Kit

  • *****
  • 574
    • Zobrazit profil
    • E-mail
Re:Maven vs. Gradle
« Odpověď #13 kdy: 29. 11. 2020, 19:51:41 »
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.

Re:Maven vs. Gradle
« Odpověď #14 kdy: 29. 11. 2020, 19:54:22 »
Mam rozsiahle skusenosti s vyvojom v Jave, Maven pouzivam skoro celu dobu a s Gradlom mam tiez skusenosti.

Na zaciatok by som odporucal pocuvat rady skusenejsich kolegov - ked su za jedno z rieseni, vychadza to z nejakych skusenosti a ked ich nevies presvedcit, teda nemas argumenty, tak by som sa riadil ich radami, kym tie skusenosti nenaberies.

K vyhodam a nevyhodam jednotlivych toolov:

Maven
-------
+ je to standardizovany nastroj, ktory ma velku podporu IDE a ked sa drzis standardu, tak vsetko funguje a nemas problem (bohuzial si casto ludia mylne myslia, ze ich problem je specialny a do standardu sa nevojdu a potom si len hadzu klacky pod nohy a maju problem - osobne som na jednom projekte stretol)
+ standard znamena, ze novi ludia hned vedia, ako projekt zbuildit, pustit testy etc. - nemusia sa ucit ako zbuildit zrovna ten tvoj projekt a pri prechode na iny projekt tieto vedemosti dumpnut do /dev/null
- je to build tool - ak potrebujes cosi navyse, tak to musis vyriesit inac (napr shell skript alebo spominany gradle - da sa kombinovat, nie je to bud/alebo)
- ak mas naozaj specificky problem (nepravdepodobne ale stat sa moze), tak je to neflexibilne riesnie

Gradle
--------
+ kedysi bol marketovany primarne ako automation tool (ktory zvladal buildit) - takze za mna flexibilny skriptovaci nastroj s JVM jazykom a kvantom kniznic, ktore sa daju pouzit
- ako v dobach antu - pises si cely build skript od zaciatku a co projekt, to inac vyzerajuci skript a ludia sa musia ucit pustat nieco uplne ine
- videl som pouzitie v rukach nedostatocne skusenych ludi a po par rokoch sa to moze cele zahodit a napisat znovu, lebo nikto netusi, co ta vec vlastne robi (ked sa niekto snazi, tak aj maven dokaze byt neprehladny, ale gradle moze byt peklo)


Takze u normalnych projektov u mna urcite Maven, pripadne doplnit niecim dalsim pre extra veci.

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?