Что изменится в расширениях maven в соответствии с этой строкой в apache doc?
Я нашел это примечание в документации Maven:
Вы можете добавлять элементы в этот загрузчик классов по расширениям. Они загружаются в то же место, что и
${maven.home}/lib
и, следовательно, доступны ядру Maven и всем плагинам для текущего проекта и последующих проектов (в будущем мы планируем удалить его из последующих проектов).
Я не мог понять, что они подразумевают под "последующими проектами" здесь. Насколько я понимаю, расширения являются улучшениями на этапах жизненного цикла Maven и не зависят от проекта. Так что имеет смысл работать для всех проектов Maven.
Вопрос: Может ли кто-нибудь объяснить, что означает это утверждение "в будущем мы планируем исключить его из последующих проектов"
1 ответ
Во-первых, расширения могут быть расширениями жизненного цикла, но не обязательно. Вы можете реализовать расширения также как EventSpy, например.
Эта документация относится к Core Classloader, который доступен в таких расширениях и позволяет также расширять его с помощью расширений. Этот загрузчик классов содержит эти файлы из ${maven.home}/lib
что не является хорошей идеей и не является необходимым. Было бы лучше иметь только API подключаемого модуля Maven и его экземпляры, которые используются в данный момент, и не более того...
Существуют некоторые расширения, такие как Wagon, которые используются для выполнения перевозки в особых случаях, которые могут быть специфическими для проекта.
Начиная с Maven 3.3.1, механизм расширений ядра был улучшен, чтобы упростить загрузку определенных расширений проекта, что означает, что они расположены в ${maven.projectBasedir}/.mvn/extensions.xml
файл, а также загружается из хранилища. До 3.3.1 вам нужно сделать это вручную через mvn -Dmaven.ext.class.path=extension.jar
,