Czy Ant nadal znajduje się w „głównym nurcie” kompilacji Java?

14

Powoli zastępujemy pliki poleceń wsadowych (Windows .bat), które po prostu zgarnęły klasy skompilowane w IDE dla programistów, bardziej wszechstronnymi kompilacjami Ant (tj. Pobierają z CVS, czystą kompilację, jar, archiwum, e-mail itp.)

Spędziłem dużo czasu na nauce (i debugowaniu problemów) z Antem, więc najwygodniej jest go używać do tych zadań. Zastanawiam się jednak, czy Ant nadal jest w tak szerokim użyciu, jak wtedy, gdy zaczynałem się uczyć, czy też „świat przeniósł się” na coś nowszego (i może bardziej płynnego). (Zacząłem widzieć więcej materiałów do budowy Maven, których nigdy nie używałem).

Praktyczne znaczenie tego pytania polega na tym, czy zachęcam nowych programistów do nauki Anta , czy też powinni się uczyć czegoś innego dla kompilacji?

Nigdy nie przesadzam z trendami, więc wspaniale byłoby usłyszeć od innych programistów Java, co ich zdaniem jest najlepszym narzędziem do budowania, i czego według nich nowi programiści powinni się uczyć.

Sam Goldberg
źródło
Przeczytaj wszystkie odpowiedzi poniżej i wszystkie były świetne! Dzięki za wgląd w to, jakie ulepszenia oferuje Maven w stosunku do Anta. Będę patrzył w Maven.
Sam Goldberg,
Jest bardzo niewiele projektów, które są na tyle proste, że nie wymagają mnóstwa skryptów dla mrówek. Maven obsługuje wiele z tych rzeczy w standardowy sposób.
Ant jest w zasadzie skryptem powłoki w XML (i używa poleceń Ant zamiast poleceń powłoki).
user253751
Mrówka to niesamowita strata czasu. Nawet gdy maven był okropny, był to mądrzejszy wybór. Ant nie ma możliwości zintegrowania się z IDE, a projekty Java to ogromny bałagan plików - 30% czasu spędzasz na przeskakiwaniu z pliku do pliku.
Bryan Hunt
@bryanhunt: ostatecznie wykorzystaliśmy Maven do wszystkich nowych projektów. Nie znalazłem jednak dobrego sposobu na stworzenie pakietu wdrożeniowego dla aplikacji Java. (Można kopiować zależności, przesyłać jar). Większość postów, które czytam, odpowiada, jak to zrobić, na przykład użycie wtyczki Ant. Uważam więc, że używam Mrówki do przygotowania końcowej mocy wyjściowej Maven. Wydaje się, że jest to o wiele łatwiejsze w Ant, niż użycie wtyczki Maven Assembly.
Sam Goldberg,

Odpowiedzi:

23

Zgadzam się z innymi, że Maven przejął najważniejsze projekty, na które patrzyłem.

Podczas gdy Ant jest bardzo elastyczny, plik kompilacji nie jest ustandaryzowany, więc kiedy przenosisz się do nowego projektu lub firmy, cele są nazywane inaczej, plik ma inną strukturę, zależności między celami mogą zostać ustanowione lub nie itp.

Dzięki Maven zyskujesz także to, że nie musisz nosić zależności binarnych (mówię o słoikach) w swoim systemie SCM. Wiele innych świetnych narzędzi Java wie, jak odczytać plik POM Maven (korzyść ze standaryzacji), więc narzędzia takie jak IDE mogą bardzo szybko skonfigurować projekt Maven, a narzędzia takie jak Jenkins mogą łatwo wykonywać kompilacje Maven.

RonU
źródło
13
Powinienem także dodać, że korzystanie z Maven sprawia, że ​​nasze projekty są agnostyczne wobec IDE, a jeśli kiedykolwiek byłeś w sklepie, w którym toczyły się wojny IDE, możesz docenić wyeliminowanie tej bitwy religijnej!
RonU
11

Pracowałem z Antem i Maven. Z mojego doświadczenia wynika, że ​​Maven ma bardzo silną przewagę nad Antem.

  • Wszystkie projekty, które widziałem przez ostatnie 2 lub 3 lata, wykorzystują maven. Około 3 lata temu zastanawiałem się, ponieważ używane wtedy wersje maven (2.0. Coś) wydawały się dość niewiarygodne i błędne. W pewnym momencie (2.1 lub 2.2 nie pamiętam) maven stał się godny zaufania i po pewnym czasie spędziłem z nim czas, zmieniłem zdanie na przeciwne. Teraz wolę być zaskoczony, widząc kogoś, kto woli mrówkę niż maven.

Z mniej pozytywnych uwag na temat maven moje dotychczasowe doświadczenia z dokumentacją nie były tak wspaniałe. Wydaje mi się, że widziałem produkt z dokumentacją gorszą niż dokumentacja maven, ale nie pamiętam, który (niektóre starożytne biblioteki CSV iirc).

komar
źródło
2
Nie wiem, uznałem Maven Reference za całkiem przyzwoity. To nie jest idealne i rzeczywiście istnieją ciemne nieudokumentowane rogi, ale wciąż IMHO jest znacznie lepsze niż średnia.
Péter Török
@ PéterTörök right Maven Reference to także moja pierwsza pomoc. Jakoś jednak większość rzeczy, które mnie martwią, kończy się w tych ciemnych, nieudokumentowanych rogach . Mówiąc ściślej, uważam, że te rogi są bardziej „ciemne” niż „nieudokumentowane” - to znaczy czuję, że wiedza tam jest, ale nie potrafię jej rozszyfrować. Nie wiem, może mam pecha. A może głupi. A może faceci z Maven po prostu nie mają przyzwoitego pisarza technologicznego w swoim gangu
gnat
1
Dlaczego kiedykolwiek widziałeś projekt open source, który miał przyzwoitego pisarza ds. Technologii? ;-)
Péter Török
@ PéterTörök so true! :) Luksusem popularnych projektów OSS jest to, że jest wielu ekspertów, którzy „zastępują” pisarza. Dla mnie tak było w przypadku Mavena - zawsze był jakiś guru, wokół którego mógłbym zapytać o trudne rzeczy
gnat
3

Używamy Maven od kilku lat. Obsługuje skrypty Ant (podobnie jak Ant obsługuje BeanShell), więc Twoja wiedza na temat Ant może być nadal przydatna. Maven jest znacznie potężniejszy, ale ma pewne dodatkowe wymagania dotyczące infrastruktury (będziesz chciał, aby serwer Artifactory lub Nexus hostował twoje kompilacje, jeśli dzielisz komponenty między wiele projektów). Różni się również od Anta, więc nie możesz wykorzystać dużej wiedzy.

TMN
źródło
1

Myślę, że sam Ant jest martwy w wodzie; ręczne określenie wszystkich zależności ścieżki klasy (w zależności od konfiguracji) jest zbyt ręczne i narażone na błędy. Jeśli Ant jest używany wraz z narzędziem do zarządzania zależnościami, takim jak Ivy, zachowuje swoją moc i eliminuje potrzebę ręcznego zarządzania zależnościami.

Innym problemem związanym z Antem w porównaniu z Mavenem jest brak standaryzacji, o którym wspomniano w innych odpowiedziach. Podczas przechodzenia od projektu do projektu lub pracy do pracy jedną z najbardziej irytujących rzeczy jest dla mnie poznanie nowego standardu dla różnych plików Ant. Cel konwencji Mavena dotyczący konfiguracji oznacza, że ​​dwa różne projekty będą miały bardzo podobną strukturę, dzięki czemu przejście między nimi będzie znacznie łatwiejsze niż w przypadku Anta.

Jeśli chodzi o to, czy Ant nadal jest głównym nurtem, czy nie, będzie to zależeć od środowiska programistycznego, w którym pracujesz. Jeśli projekt jest w małej firmie lub start-upie, wyobrażam sobie, że Maven będzie naturalnym wyborem i można poświęcić czas inwestować w infrastrukturę, taką jak Artifactory. Jednak duże firmy zainwestują wiele lat i dużo pieniędzy w swoją infrastrukturę Ant (konfiguracje, globalne pliki kompilacji itp.), Co oznacza, że ​​będą mniej skłonni do rezygnacji z technologii, w którą zainwestowali tyle pieniędzy.

Richard
źródło
0

Maven rośnie od wielu lat i teraz muszę się tego nauczyć. Wszystko będzie się zawsze zmieniać, a świadomość, że Ant traci pozycję, nie jest złą rzeczą.

Maven może być na topie i przybywać tylko przez krótki czas, ale jeśli ułatwi to nam pracę, warto zainwestować czas na naukę.

Jon Shanks
źródło