2008-12-22 21 views

Odpowiedz

5

Chociaż podoba mi się pomysł z z Maven, zawsze walczę o to z niczym, z wyjątkiem najprostszych konfiguracji. Jego architektura jest oparta na wtyczkach, a jakość wtyczek jest bardzo różna. Dokumentacja jest w najlepszym razie pobieżna; przez połowę czasu nie mogę się dowiedzieć, czy czytany dokument jest dla Mavena 1 czy 2. Jak często musiałeś uciekać się do używania maven-ant-plugin, żeby zrobić coś podstawowego?

Używam od Apache Ivy od około roku i jestem z tego całkiem zadowolony. Jest jednak trochę krzywej uczenia się. Ale istnieje aktywna lista mailingowa, a autor jest bardzo elastyczny.

W efekcie napisałem "bibliotekę" kilku prostych celów Ant, takich jak "rozwiązać", "skompilować", "zainstalować" itp., Które oczekują, że wszystko będzie w standardowych miejscach Mavena (takich jak src/main/java), a następnie <import> cele w moich różnych projektach. W ten sposób uzyskasz to, co najlepsze z obu światów - konfigurację w stylu Mavena i całą moc Anta.

4

Uwielbiam używać Ant z Ivy. Ivy używa repozytoriów Maven do pobierania zależności bibliotek bez zmuszania cię do zmiany całego systemu kompilacji, aby pasował do Mavena.

3

Dla niektórych z moich projektów używam buildr. Bardzo zwięzłe i czytelne skrypty budujące (bez xml) i używa maven repos (z trywialnym wysiłkiem, maven 1 i maven 2).

Szukałem czegoś po maven1 do pracy nad niektórymi projektami, a m2 nie było aż tak pociągające. Maven już zostawił wszystkich użytkowników m1 wysokich i suchych z potrzebą powtórzenia wszystkich swoich systemów kompilacji (a niektóre moje nie mogą być wyrażone w m2, o ile mogę powiedzieć).

+0

Jedyna droga, XML (Ant) nie jest stosowny do zadań, które chcemy zrobić. To zaskakujące, jak długo społeczność musi to zrozumieć. – Denis

0

Poszedłbym z buildrem, jeśli oczekuję złożonych celów kompilacji w mojej kompilacji. Korzyścią jest to, że nie jesteś zależny od żadnej konkretnej biblioteki. Masz wszystkie API od Ruby, aby robić, co chcesz; w przeciwieństwie do Ivy, w takim przypadku nadal jesteś związany z ANT. Wysiłek migracji do Ivy jest warty, jeśli chcesz wprowadzić zależność od biblioteki do już ustalonego mechanizmu budowania opartego na ANT, który wykonuje wszystkie operacje, które chcesz wykonać.

0

Istnieją co najmniej trzy różne części Maven: repozytorium, niezależny od implementacji styl życia i konwencje dotyczące domyślnego projektu. Używanie Ivy zapewnia tylko repozytorium.

Nie użyłem tego, ale myślę, że easyant został zaprojektowany jako kompletny zamiennik Mavena. Używa Ivy jako repozytorium, ale dodaje konwencje i standardowe moduły.

+0

Znalazłem EasyAnt intrygujące, ale ich dokumentacja nie jest tak dobra. Powinien powiedzieć, że jest ukierunkowany głównie na Javę i porównanie z Antem i Mavenem, które są największymi graczami w Javie. – Wernight

1

Naprawdę lubię używać ant4eclipse - konfigurujesz zależności projektu w Eclipse tak jak zwykle i możesz napisać pojedynczy skrypt ant, który zbuduje wszystkie projekty we właściwej kolejności.

Dla bibliotek innych firm można skonfigurować pojedynczy projekt zaćmienia zawierający (i eksportujący) wszystkie twoje słoiki [NIE POLECAM TEGO], lub osobny projekt dla każdej biblioteki niezależnej, eksportując słoik. [Polecam to ostatnie b/c możesz śledzić projekt-> strona trzecia deponuje i aktualizuje części, gdy są potrzebne.]

8

To zależy od tego, co i tak wykorzystasz. Maven 1? Maven 2? Uważam, że Maven 2 jest przyzwoicie udokumentowany i dość potężny, gdy jest używany w połączeniu z zadaniami Ant i niektórymi wtyczkami Java upieczonymi w domu.

Istnieją zadania Ant, które umożliwiają korzystanie z funkcji Maven z Ant: http://maven.apache.org/ant-tasks/index.html. Więc naprawdę nie musisz pisać własnej "biblioteki".

Możesz też zadzwonić do Anta z Maven: http://maven.apache.org/plugins/maven-antrun-plugin/.

Możesz także pisać scenki za pomocą Groovy na przykład: http://groovy.codehaus.org/GMaven+-+Executing+Groovy+Code.

Albo po prostu napisz kod Java dla niestandardowych bitów, których potrzebujesz: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html.

Nie ma powodu, aby nie łączyć ze sobą, kiedy można to zrobić;)

+0

(komentarz dodany, aby zapamiętać tę odpowiedź) +1 – toolkit