Maven, plugin a dependency

0

Cześć wszystkim, czy byłby ktoś w stanie wytłumaczyć mi w przystępny sposób różnicę między plugin a dependency w Maven ?

2

Dependencies (zależności), biblioteki potrzebne do zbudowania projektu. Nie pamiętam jak w Eclipse (ale chyba też), Intellij po zapisaniu pliku sam dociąga wszelkie zależności do projektu, których w nim nie ma.
Plugin to klasa, która wykonuje jakieś czynności na podstawie konfiguracji. Może wykonywać np. pakowanie klas do .jar, kompilować kod etc. Pluginy są traktowane jako rozszerzenie Mavena.

O i nawet trafiłem później jeszcze takie coś...

[https://4programmers.net/Java/Maven#plugin-archetyp]
Plugin jest to specjalna klasa w języku Java, która wykonuje pewne czynności na podstawie zadanej konfiguracji. Plugin może wykonywać różne czynności na przykład pakować skompilowane klasy do pliku jar, generować dokumentację, kompilować kod za pomocą kompilatora aspektowego. Pluginy są artefaktami mavena i tak jak artefakty posiadają swoje nazwy (artifactId), należą do grupy (groupId) i wersje (version). Plugin może być uruchamiany zawsze lub tylko w określonym przypadku. Przypadek można definiować za pomocą profili. Istotną kwestią jest to, iż plugin może posiadać swoje własne zależności, które będą brane pod uwagę gdy zostanie uruchomiony classloader pluginu. Każdy plugin posiada cele (goal), które powinny być wyspecyfikowane w trakcie uruchamiania pluginu.
Archetyp jest specyficznym pluginem za pomocą którego tworzony jest projekt. Zawiera on w swojej strukturze odwzorowanie drzewa katalogów "gołego" projektu, prosty plik pom.xml zawierający podstawowe dane projektu oraz wymagane przez projekt danego typu pliki na przykład web.xml.

Powiedz nauczycielowi żeby się dokształcił. Zaproś go na forum, niech pyta.

0

ooo, super ! Dzięki za wyczerpującą odpowiedź :)

0

@wojtiligili: Ja bym to opisał w ten sposób że plugin jest jak klasa, a goal to jest metoda tej klasy która operuje na projekcie. Dependency to jest zależność taka jak biblioteka, framework czy coś w tym stylu. Oczywiście zależnością tą też może być inny plugin mavenowy :)
Np. masz compiler plugin i goal compile. Odpalanie compiler:compile to jest tak jakbyś miał klase Compiler i wywołał na niej metode do kompilacji :)
Anologią konfiguracji mogłyby być zależności np. metody ;)

1

Nie bardzo widzę związek między jednym a drugim. Dependency to biblioteka, której twoja aplikacja wymaga, a plugin to jest pewien "program" który modyfikuje proces budowania aplikacji.
Jeśli twoja aplikacja czyta pliki Excela to pewnie potrzebuje jako dependency jakąś bibliotekę do czytania tych plików.
Jeśli chcesz zeby w trakcie budowania twojej aplikacji została ona przepakowana, tak żeby np. do jara wpadły jakieś dodatkowe pliki, to wtedy potrzebujesz pluginu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1