Maven czy Ivy do zarządzania zależnościami od Ant?

Zastanawiałem się nad najlepszym sposobem zarządzania zależnościami projektów z ant. Jakie są plusy i minusy Maven Ant task i Ivy?

Author: Loki, 2008-11-25

8 answers

Ponieważ to, co chcesz zrobić, to dodać zarządzanie zależnościami do istniejącego projektu Ant, to jest dokładnie to, co Ivy jest zaprojektowany do tego. Zarządzanie zależnościami jest dużą częścią Mavena, ale daleką od wszystkiego. Maven jest bardziej zorientowanym na projekt narzędziem, które wykonuje kilka innych rzeczy oprócz zależności. Warto zastanowić się, czy planujesz migrację do Mavena i korzystanie z dodatkowych funkcji Mavena, ale to trochę dużo, jeśli wszystko, czego chcesz użyć, to spin off Ant.

Twój rodzaj zależności i Twoje oczekiwania co do ich zachowania również będą miały znaczenie. Ściąganie zależności innych firm jest prawie trywialne w Maven, podczas gdy Ivy doskonale radzi sobie z odbudowywaniem własnych zależnych komponentów. W obu przypadkach narzędzia nie zapewnią przyzwoitych zasad budowania, wersjonowania i repozytorium , które nadal zależą od Ciebie i są potrzebne do poprawnej konfiguracji.

 41
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-25 12:09:08

Ant + Ivy = = Pole namiotowe, na którym ludzie korzystają z udogodnień w razie potrzeby.
Maven = = ośrodek, w którym polegasz na kimś innym, aby świadczyć usługi.

Maven jest łatwiejszy dla zespołu, który nie ma doświadczenia w budowaniu/integracji, ale gdy zespół będzie musiał odbiegać od standardów Mavena, znajdzie się w zasięgu groovy, gradle, a brak solidnej dokumentacji stanie się frustrujący.

Ant + Ivy zajmie więcej czasu na uruchomienie projektu, ale jeśli zespół ma build/integration doświadczenie mogą dostosować system budowania do sposobu, w jaki opracowują i publikują kod.

In engineering... firmy technologiczne zawsze naciskam na rozwiązanie kempingu kontra ośrodka.

To niesamowite, że zarówno Ant, jak i Maven wybierają XML jako swój langauge do wyrażania receptur budowania. Społeczność Java utknęła na tym XML...

 40
Author: Hosam Aly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-08 07:30:37

Ivy+Ant jest o wiele bardziej elastyczny. Ivy zajmuje się zarządzaniem zależnościami, kropką i robi to bardzo dobrze, lepiej niż Maven. Dzięki Ant możesz stworzyć dowolny system budowania, który chcesz.

Maven próbuje kontrolować wszystko - "cykl życia" (kompilacja, test, pakiet, itp.), gdzie pliki powinny żyć i tak dalej. Baw się dobrze dostosowując wtyczki i tym podobne, jeśli nie podoba ci się"Maven way".

Maven jest odpowiedzią na pytanie, którego nikt nie zadał. Pisanie Mrówki skrypt nie jest trudny, a Ivy daje lepsze zarządzanie zależnościami niż Maven. Jestem zdezorientowany przez niektóre z poprzednich komentarzy stwierdzających, że nie mogli zmusić Ivy do pracy. Ivy jest nieco prostszy od Mavena, aby zacząć działać.

Spring Framework wykorzystuje Ivy w procesie budowania. Myślę, że to może być postrzegane jako wotum zaufania dla Ivy.

 8
Author: BCK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-03 21:53:15

Myślę, że ten wpis na blogu opisuje dokładnie to, czego szuka OP:

Dlaczego powinieneś używać Zadań Maven Ant zamiast Mavena lub Ivy

 7
Author: Peter Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 10:02:15

Jeśli Twoim długoterminowym celem jest migracja do korzystania z Mavena do zarządzania całym procesem budowania( co można zamiar zrobić dla nowych projektów greenfield), to serdecznie polecam korzystanie z Maven pom.pliki xml do zarządzania zależnościami w imieniu Ant build.pliki xml. W rezultacie zarówno twoje projekty typu greenfield, jak i starsze projekty wykorzystują ten sam mechanizm do zarządzania zależnościami. I okazuje się, że Maven naprawdę lepiej radzi sobie z zarządzaniem zależnościami dla ANT build.xml Pliki niż Ivy.

Przed zaadoptowaniem Mavena jako naszego flagowego narzędzia do budowania, miałem próbę wykorzystania Ivy w połączeniu z istniejącym Ant build.pliki xml. To było najbardziej frustrujące doświadczenie, które wkrótce doprowadziło nas do odrzucenia Ivy. Zdecydowaliśmy się na adopcję Mavena. Nasze projekty greenfield zaczęły być budowane z podejściem stock Maven itp.

Jednak wróciłem do starszych projektów Ant i zacząłem używać Maven Ant task do definiowania definicji classpath (i czasami inne definicje własności Ant wyciągnięte z pom.xml). To okazało się być najbardziej wspaniałe doświadczenie. Istniejąca Budowa mrówek.pliki xml muszą być tylko nieznacznie zmodyfikowane, aby użyć integracji Maven ant do zdefiniowania dowolnej ścieżki klas, która była używana w kompilacji.plik xml. Wszystkie zależności wymagane przez projekt zostały zdefiniowane w dołączonym pom.plik xml, który jest przetwarzany przez Mavena za pośrednictwem zadania Ant włączonego do kompilacji.pliki xml.

Lunety Maven mogą być używane do Dopracować definicje klas tak, aby można było ustalić, które są odpowiednie do kompilacji lub uruchamiania testu jednostkowego, lub do pakowania itp. Również praktycznie każdy element czegoś zdefiniowanego w pom.plik xml może być określany jako właściwość Ant w kompilacji.plik xml.

Naprawdę z zadaniem Ant dla Mavena nie ma realnego powodu, aby Ivy w ogóle istniała.

 7
Author: RogerV,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-25 12:06:36

Porównanie Mavena z ivy/ant to porównanie smartfona z telegrafem.

Jeśli chcesz wykorzystać prawdziwy trwały efekt w swojej infrastrukturze budowania, lepiej jest użyć Maven, ponieważ przewiduje i abstrakuje wszystkie procesy i zadania, z którymi ma do czynienia każdy projekt oprogramowania lub inny projekt podobny do oprogramowania. Brałem udział w wielu projektach i jeśli twoje projekty staną się bardziej złożone, bardziej zróżnicowane i heterogeniczne, jeszcze bardziej pochwalisz prostotę projektu Maven konfiguracja. Rzeczywiście, będzie to skomplikowane, ale nie skomplikowane w porównaniu do projektów ivy/ant-driven.

Główną zaletą Mavena jest "konwencja nad konfiguracją" (http://en.wikipedia.org/wiki/Convention_over_configuration) bardzo ważny paradygmat. Krótko mówiąc, oznacza to, że nie musisz znać / konfigurować rzeczy, które są oczywiste/banalne / powszechne. Chociaż Maven i wszystkie jego wtyczki są dostarczane z wieloma domyślnymi ustawieniami, zawsze masz możliwość skonfigurowania projektów dla Twoje specjalne potrzeby. Z Maven, z jednej strony można skonfigurować projekt bardzo łatwo i szybko; z drugiej strony, można dostosować rosnący projekt do swoich potrzeb przy minimalnym wysiłku. Jeśli zrozumiałeś kluczowe pojęcia stojące za Mavenem, wykorzystasz każdy projekt, a także projekty, które nie są typowymi projektami programistycznymi.

W przeszłości pisałem wiele skryptów ant i wraz z nadchodzącym Mavenem zacząłem nienawidzić ant. Jedną wadą jest to, że zawsze kopiujesz skrypty i powtórz się, rozwijaj zadania mrówek, które nie powtarzają zadań, które nie powtarzają zadań, które nie powtarzają się... Główną wadą jest to, że rosnące Skrypty mrówek stają się nie do utrzymania, zwłaszcza jeśli tuzin maniaków mrówek chce odpicować sobie Skrypty mrówek.

Wielu entuzjastów mrówek cierpi z powodu uzyskania ogólnej kontroli nad błahymi rzeczami, takimi jak kopiowanie artefaktów i drukowanie buildmessages. Ale ponieważ kluczową koncepcją Mavena jest ukrywanie tych błahych rzeczy, legenda na zawsze zachowa żyje, że Maven ogranicza potrzeby dostosowywania. Ale nie martw się, to legenda! I tak w końcu rozumiesz moje wstępne stwierdzenie: nie przejmuj się błahymi rzeczami, które są już rozwiązane.

Może ivy / ant jest opcją dla prostych projektów, ale dla złożonych projektów rosnących potrzebujesz prostoty i konwencji. W przeciwnym razie będziesz przytłoczony coraz większymi problemami z utrzymaniem. Zwłaszcza jeśli masz wiele zależnych projektów, technologii i heterogenicznych części produktu w globalny projekt nie masz czasu i pieniędzy na tworzenie i testowanie skryptów ant lub rozwiązywanie problemów z zależnościami.

Należy wspomnieć o kolejnej Radzie: Ant oferuje integrację Mavena. Ta integracja jest często używana do testowania i zabawy z mavenem w projektach, które są dorosłe z ant. Unikaj tego głupiego podejścia, ponieważ generuje więcej problemów. Zamiast tego zostań z mrówką i jej bólem lub migruj w pełni do Mavena.

Jeśli masz wątpliwości co do kosztów migracji proponuję użyj odwrotnego sposobu integracji różnych światów za pomocą wtyczki Maven-Ant. Dzięki tej standardowej wtyczce możesz uruchomić każdy skrypt ant bez żadnego wysiłku. Na pewno jest to rozwiązanie Starsze na jakiś czas, ale daje Ci tyle czasu, ile potrzebujesz, aby zrozumieć mega-linie potwornych zniekształconych skryptów ant swojego poprzednika.

A teraz pochwalisz kolejną zaletę Mavena: potrzebujesz bardzo mniej dokumentacji konfiguracji, ponieważ dokumentacja jest częścią każdego maven-plugin, którego chcesz użyć.

Więc przyznaję, że byłem antagonistą Maven.

 5
Author: shylynx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 21:33:52

Wiem, że jedną z zalet Ivy jest to, że może korzystać z różnego rodzaju repozytoriów. Maven jest zazwyczaj bardzo sztywny w formacie repozytorium, którego będzie używał. To wszystko co wiem.

 2
Author: David M. Karr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-25 21:02:49

Właśnie spędziłem 2 dni czytając dokumentację Ivy i muszę powiedzieć, użyj Mavena, jeśli masz jakiś wybór. Ivy jest kompletnym śmieciem. Właśnie zmarnowałem 2 dni, próbując włączyć go do mojej kompilacji i zmniejszam teraz swoje straty. Dlaczego?

    Ivy jest pół-dupną próbą zarządzania zależnościami.]}
  • Ivy documentation is a total joke
  • Ivy przykłady i tutorial są bezużyteczne

Jak tylko wprowadziłem 'konfiguracje' (czytane jako profile maven), Ivy zaczął bezerk ściągać wszelkiego rodzaju śmieci, których nie potrzebuję, a następnie zawieść. Dokumentacja dla Ivy to kompletny żart. Dokumentacja Mavena dla porównania wygląda jak sen. Jeśli potrzebujesz przykładu tego, jak nieprzenikniona i źle napisana jest dokumentacja Ivy, spójrz na stronę referencyjną dla konfiguracji . Są one istotną częścią każdej konstrukcji, ale w Ivy wydają się być źle zaprojektowane po myśli.

 1
Author: Alex Worden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-09 21:13:13