Как Intellij IDEA управляет зависимостями плагинов?

Поиграв некоторое время с плагинами Intellij IDEA, я заметил, что плагины с внешними зависимостями работают нормально, даже если эти зависимости не связаны с самим плагином и нигде публично не объявлены.

Выбор случайного примера :плагина GenerateToString зависит, помимо прочего, от log4j. Но если вы заглянете внутрь jar-файла, то увидите, что он содержит только свои собственные классы плюс некоторые ресурсы (изображения и файлы html )и метаданные (обязательный plugin.xml и MANIFEST.MF ), ни в одном из которых нет ссылки на log4j. И этот файл jar — единственное, что вам нужно для установки плагина.

Как это возможно? Как IDEA управляет этими зависимостями, чтобы не выдавать ClassNotFoundExceptionили что-то подобное во время выполнения?

8
задан Makoto 1 September 2014 в 03:51
поделиться