Борьба в понимании maven зависимостей и классов путей - PullRequest
0 голосов
/ 23 февраля 2020

Предположим, это рабочий процесс действий:

  • У меня есть проект Eclipse maven.
  • Я открываю pom. xml и добавляю зависимость Dependency1 с областью действия " runtime "
  • Как только я сохраню pom. xml, eclipse загрузит зависимость из центрального репозитория и поместит ее в мой локальный репозиторий в папке .m2.
  • Если я go для библиотек / maven-зависимостей, я увижу эту зависимость с зеленым значком (который, я думаю, означает, что он не нужен для компиляции, и если я попытаюсь импортировать этот класс в любой. java файл, я получу ошибку).
  • Что касается документов maven: " Эта область указывает, что зависимость не требуется для компиляции, но предназначена для выполнения. Она находится во время выполнения и пути к классам теста, но не в пути к классам компиляции «.

    Как только я напишу import Depencency1.targetPackage. *; я получу импорт "Dependency1 не может быть разрешен" , потому что я представляю " кто-то "ищет Dependency1.jar под" путем "(который определяет этот путь), который его не содержит?!
    Абстрактная концепция мне ясна, но хотелось бы подробно узнать, что происходит (и кто это делает) с момента, когда я записываю оператор импорта в файл. java в eclipse, до точки «пакет не может быть решен».

  • Я также хотел бы лучше понять (но я думаю, что это придет вместе с пониманием пункта выше), как это влияет на процесс упаковки maven. Например, я представляю, что JAR, загруженный через зависимость времени выполнения, не будет физически включен в производимый результат (JAR, WAR, EAR)?

Спасибо за любую помощь, я ищу много вещей вокруг, но на самом деле не могу найти этого полного объяснения, которое наполняет все мои сомнения.

Davide

1 Ответ

1 голос
/ 23 февраля 2020

Зависимости области действия runtime упакованы в окончательный WAR / EAR, но не доступны для компиляции. Эта область иногда используется, если api и impl разделены на разные банки. Затем пометка impl как runtime предотвращает случайное использование классов из impl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...