Po graniu z wtyczkami Intellij IDEA przez pewien czas zauważyłem, że wtyczki z zewnętrznymi zależnościami działają dobrze, nawet jeśli te zależności nie są dołączone do samej wtyczki ani nie są publicznie deklarowane nigdzie.W jaki sposób Intellij IDEA zarządza zależnościami wtyczek?
Wybieranie losowego przykładu: wtyczka GenerateToString zależy, między innymi, od log4j. Ale jeśli zajrzysz do pliku jar, zobaczysz, że zawiera on tylko własne klasy plus niektóre zasoby (obrazy i pliki html) i metadane (obowiązkowe plugin.xml i MANIFEST.MF), z których żaden nie ma żadnych odniesienie do log4j. I ten plik JAR jest jedyną rzeczą, którą potrzebujesz zainstalować wtyczkę.
Jak to możliwe? W jaki sposób IDEA radzi sobie z tymi zależnościami, tak aby nie rzucały one w środowisko wykonawcze w stylu ClassNotFoundException
?