2011-08-23 13 views
8

Biorąc pod uwagę, że w oficjalnej dokumentacji bardzo trudno jest znaleźć informacje o zakresach zależności w zależnościach (najlepiej wymyślić http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution), zastanawiam się, czy nadal są uważani za obywateli pierwszej klasy Maven POMs.Czy zakresy zależności zależności Maven powinny być uważane za przestarzałe?

Myślę, że większość ludzi zgodziłaby się, że i tak jest to zła praktyka, ale zastanawiam się, dlaczego tak trudno znaleźć coś oficjalnego w tej sprawie.

Odpowiedz

7

Nie są one przestarzałe pod względem formalnym, ponieważ zostaną usunięte w przyszłej wersji. Jednak ich ograniczenia (i późniejszy brak szerokiego zastosowania) oznaczają, że nie są one tak użyteczne, jak pierwotnie zamierzano, a także, że mało prawdopodobne jest, aby uzyskać poprawę bez istotnego ponownego przemyślenia.

Dlatego dokumentacja jest tylko w formie dokumentacji projektowej - istnieją, ale ważne przypadki użycia nigdy nie zostały zakończone do momentu, w którym zalecałbym ich ogólne używanie.

Jeśli masz przypadek użycia, który działa obecnie i może dostosować się do ograniczeń, możesz oczekiwać, że będą nadal działać w dającej się przewidzieć przyszłości, ale niewiele poza tym w pracach.

+0

Dzięki, bardzo pomocne! – Kutzi

5

Nie wiem, dlaczego uważasz, że zakresy wersji nie są udokumentowane. W dokumentacji Maven Complete Reference znajduje się konkretne streszczenie.

Niemniej jednak - ogromnym problemem (moim zdaniem) jest to, że jest udokumentowane, że "Rozdzielczość zakresów zależności nie powinna być przekształcana w migawkę (wersja rozwojowa), chyba że jest zawarta jako wyraźna granica." (podany link), ale system zachowuje się inaczej. Jeśli używasz zakresów wersji, otrzymasz wersje SNAPSHOT, jeśli istnieją w twoim zasięgu (MNG-3092). Dyskusja, jeśli jest to pożądane, jeszcze się nie zakończyła.

Obecnie - jeśli używasz zakresów wersji - możesz uzyskać zależności SNAPSHOT. Więc naprawdę musisz być ostrożny i zdecydować, czy jest to pożądane. Może to być przydatne dla twoich własnych rozwiniętych depedencji, ale wątpię, że powinieneś go używać w bibliotekach zewnętrznych.

+0

Cóż, szukałem go i najlepsze, co mogłem znaleźć, to link powyżej. Oczekiwałbym czegoś oficjalnego na stronie Apache - ponieważ to przecież projekt Apache. Ale dzięki za link. – Kutzi

+0

@Kutzi Sonatype jest [silnym] (http://www.sonatype.com/About-Sonatype/Contributions) kontrybutorem maven projektu (i ekosystemu) - więc ich dokumentacja jest również pewnego rodzaju "z pierwszej ręki" informacji. – FrVaBe

+1

Ale tylko "rodzaj pierwszej ręki".Dopóki więc nie zobaczę oficjalnej dokumentacji Apache, podtrzymuję moje oświadczenie, że zakresy wersji nie są udokumentowane ;-) – Kutzi

-1

Zakresy wersji są jedynym powodem, dla którego Maven jest nadal przydatny. Nawet biorąc pod uwagę, że ich nie używamy, jest to zła praktyka, ponieważ prowadzi nas to do katastrofy wielomodułowych buildów, niefunkcjonalnych materiałów rodzicielskich, kompilacji, które trwają 10 minut lub dłużej, źle skonstruowanych projektów, takich jak Spring, Hibernate i Wicket, gdy obejmujemy naszą nielegalną Podcast argumentacyjny.

Aby odpowiedzieć na twoje pytanie, nie są one uznawane za przestarzałe i są aktywnie wykorzystywane w wielu projektach (z wyjątkiem sytuacji, gdy Sonatype zezwala na uszkodzenie metadanych w Apache Maven Central).

Jeśli chcesz naprawdę dobry przykład budowy bez wielu modułów (tylko reactor.xml), gdzie zakresy wersji są szeroko stosowane, spójrz na kod Sticky (http://code.google.com/p/ stickycode /)

Powiązane problemy