Chciałbym odpierać kilka skarg zgłoszonych na tym forum:
Maven to wszystko albo nic. A przynajmniej na tyle, na ile mogłem stwierdzić z dokumentacji. Nie można łatwo używać mavena jako zamiennika mrówki i stopniowo przyjmować bardziej zaawansowane funkcje.
To nieprawda. Wielką wygraną Mavena jest używanie go do zarządzania swoimi zależnościami w racjonalny sposób, a jeśli chcesz to robić w maven i robić wszystko inne w mrówce, możesz. Oto jak:
<?xml version="1.0" encoding="UTF-8"?>
<project name="foo" basedir="." xmlns:maven="antlib:org.apache.maven.artifact.ant" >
<maven:dependencies verbose="true" pathId="maven.classpath">
<maven:pom id="maven.pom" file="pom.xml" />
</maven:dependencies>
</project>
Masz teraz obiekt classpath o nazwie „maven.classpath”, który zawiera wszystkie zależności maven zdefiniowane w pliku pom. Wszystko, czego potrzebujesz, to umieścić plik jar maven mrówka z zadaniami w katalogu lib twojego programu Ant.
Maven uzależnia proces budowania od połączenia sieciowego.
Domyślny proces zależności i pobierania wtyczek zależy od połączenia sieciowego, tak, ale tylko dla początkowej kompilacji (lub jeśli zmienisz zależności lub używane wtyczki). Następnie wszystkie słoiki są buforowane lokalnie. A jeśli chcesz wymusić połączenie bez sieci, możesz powiedzieć mavenowi, aby używał trybu offline.
Od samego początku narzuca ci sztywną strukturę.
Nie jest jasne, czy odnosi się to do formatu pliku, czy do problemu „konwencja czy konfiguracja”. W tym drugim przypadku istnieje wiele niewidocznych ustawień domyślnych, takich jak oczekiwana lokalizacja plików źródłowych i zasobów Java lub zgodność źródła. Ale to nie jest sztywność, to wprowadzanie rozsądnych wartości domyślnych, więc nie musisz ich jawnie definiować. Wszystkie ustawienia można łatwo zmienić (chociaż początkującemu może być trudno znaleźć w dokumentacji sposób zmiany pewnych rzeczy).
Jeśli mówisz o formacie pliku, cóż, jest to omówione w odpowiedzi na następną część ...
Jest oparty na XML, więc jest tak trudny do odczytania, jak ANT.
Po pierwsze, nie rozumiem, jak możesz narzekać, że jakiś aspekt czegoś „nie jest lepszy od mrówki” jako usprawiedliwienie dla tego, że ma złą reputację. Po drugie, chociaż nadal jest to XML, format XML jest znacznie bardziej zdefiniowany. Ponadto, ponieważ jest tak zdefiniowany, o wiele łatwiej jest stworzyć rozsądny, gruby edytor klienta dla POM. Widziałem strony długie, skrypty budujące mrówki, które przeskakują wszędzie. Żaden edytor skryptów kompilacji Ant nie uczyni tego bardziej przyjemnym, po prostu kolejna długa lista połączonych zadań przedstawionych w nieco inny sposób.
Powiedziawszy, że jest kilka skarg, które widziałem tutaj, które mają lub miały jakąś zasadność, największa istota
- Dokumentacja jest słaba / brakuje
- Odtwarzalne kompilacje
- Integracja Eclipse jest zła
- Robaki
Na co moja odpowiedź jest dwojaka. Po pierwsze, Maven jest znacznie młodszym narzędziem niż Ant czy Make, więc musisz się spodziewać, że dojście do poziomu dojrzałości tych aplikacji zajmie trochę czasu. Po drugie, jeśli ci się to nie podoba, napraw to . Jest to projekt open source i używanie go, a następnie narzekanie na coś, w czym każdy może mieć swój udział, wydaje mi się dość głupie. Nie podoba Ci się dokumentacja? Przyczyń się do tego, aby była jaśniejsza, pełniejsza lub bardziej dostępna dla początkującego.
Problem z odtwarzalnymi kompilacjami dzieli się na dwa problemy, zakresy wersji i automatyczne aktualizacje wtyczek maven. W przypadku aktualizacji wtyczki, chyba że upewniasz się, że przebudowując projekt rok później, używasz dokładnie tego samego JDK i dokładnie tej samej wersji Ant, cóż, to jest ten sam problem z inną nazwą. W przypadku zakresów wersji zalecam pracę nad wtyczką, która utworzy tymczasowy pom z zablokowanymi wersjami dla wszystkich bezpośrednich i przechodnich zależności i uczyni go częścią cyklu życia wydania mavena. W ten sposób pomsy kompilacji wydania są zawsze dokładnymi opisami wszystkich zależności.