2010-11-19 8 views
21

Czy uważasz, że dobrą praktyką jest usunięcie wszystkich przechodniów zależności, które można znaleźć w mavenponie?Maven: Czy powinienem zachować lub usunąć deklarowane zależności, które są również zależnościami tranzytowymi?

Przykład:
Mój projekt zależy na A i B.
B jest również przechodnia zależność A.
powinienem zachować B w moim pom lub usunąć?

Co jest najlepsze:
o wszystkie znane słoiki, nawet przechodnie, zadeklarowane na pom lub zawierające tylko słoiki na najwyższym poziomie?

To jest trochę subiektywne, ale staram się wyczyścić ogromne poms (rodzic i dzieci) z wieloma przejściowymi zależnościami. Chcę, aby mój pom był tak prosty, jak to tylko możliwe, ale chcę też, żeby były możliwe do utrzymania.

Odpowiedz

19

Jeśli twój projekt ma bezpośrednie zależności od B, powinieneś zachować to, nawet jeśli B jest przejściową zależnością A. Może być tak, że w następnej wersji A nie użyje B i będziesz musiał zrestrukturyzować pom .xml.

Ogólnie, zależności Mavena powinny odzwierciedlać zależności logiczne projektu.

+0

Dzięki za odpowiedź i link. Podoba mi się ta rada: "odzwierciedlaj zależności projektu logicznego" – Guillaume

+0

Czy nie sądzisz, że powinieneś dokonać rozróżnienia między wewnętrznymi i zewnętrznymi zależnościami? Miałem podobne pytanie: http://stackoverflow.com/questions/20800571/are-there-any-reasons-to-keep-explicit-dependency-declaration-for-my-own-transit Wciąż nie widzę powodu dlaczego powinienem zawracać sobie głowę deklarowaniem wszystkich zależności między moimi własnymi modułami. Jeśli API ulegną zmianie, a projekt nie uda się skompilować, to naprawię go i najprawdopodobniej poprawię łatwość obsługi kodu po drodze :) –

+0

W jaki sposób jest link związany z pytaniem/odpowiedzią? –

11

bym wolą do uniknąć deklarację z przechodnich zależnościach i wyraźnie uwzględnić je w ich pom jeśli istnieje dobry powód. Oto moje argumenty:

  • próbuję utrzymują pom jak najprostsze. Po zadeklarowaniu zależności przechodnich, nawet jeśli są one używane jawnie, Maven pom staje się bardziej gadatliwy.

zgłaszając przechodnie zależnościami (nawet jeśli wyraźnie ich potrzebują):

  • Redundancja w deklaracji wprowadza, bo ta informacja jest już w deskryptorze pom na artefaktu, który jest wymagany.

  • Jeśli nowa wersja artefaktem wymagane nie zależy już na transitive dependency, trzeba usunąć transitive dependency z montażem siebie, jeśli transitive dependency jest jawnie zadeklarowane.

  • Informacje dotyczące przechodniości są przetwarzane przez jawne deklarowanie zależności przechodnich.

To miałoby sens zawierać zależność wyraźnie w następującym przypadku:

  • Masz jeden dwa zależności, mówią C i D, które wymagają różnych wersji zależnością przechodniego B (lub potrzebujesz konkretnej wersji B w swoim projekcie).W tym przypadku musisz wybrać wersję B i jawnie zdefiniować zależność przechodnią T. (*)

Wnioski: Chciałbym unikać deklaracji, chyba że ma to sens, aby zadeklarować artefakt specjalnie (jak w przypadku (*)).

+0

Jeśli chcesz wziąć udział w podobnej dyskusji: http://stackoverflow.com/questions/20800571/are-there-any-reasons-to-keep-explicit-dependency-declaration-for-my-own-transit –

Powiązane problemy