Co zasugerowałbyś jako zamiennik zestawu narzędzi do budowania Java Maven? Po prostu zwykłe skrypty Ant? SCons?Wymiana Maven?
Odpowiedz
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.
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.
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ć).
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ć.
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.
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
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.]
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ć;)
(komentarz dodany, aby zapamiętać tę odpowiedź) +1 – toolkit
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