Я использую Eclipse + Maven + m2eclipse для создания и тестирования веб-приложения в Apache Tomcat.
Я сконфигурировал сервер Tomcat внутри Eclipse и сконфигурировал сборку развертывания для своего веб-приложения, включая «Зависимости Maven» (специализация Java Build Path Entries).
Когда я развертываю и запускаю сервер, Tomcat / Catalina всегда предупреждает меня:
ИНФОРМАЦИЯ: validateJarFile (/projects/src/main/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapp/WEB-INF/lib/servlet-api-2.5.jar) - банка не загружена. См. Спецификацию сервлета 2.3, раздел 9.7.2. Класс нарушения: javax / servlet / Servlet.class
Это связано с тем, что m2eclipse рассматривает servlet-api-2.5 как зависимость от моего проекта и считает его частью «Maven Dependencies» и копирует его как часть сборки развертывания, но контейнер сервлетов Tomcat имеет свою собственную копию этого и не любит видеть 2 копии на пути к классу.
Я отметил зависимость моего проекта от servlet-api-2.5 в моем pom.xml с помощью
<scope>
provided
</scope>
что не позволяет автономному Maven упаковывать servlet-api-2.5 в мои сборки, но m2eclipse так не видит.
(Это не имеет большого значения, потому что предупреждение безвредно, я вижу его только во время тестирования внутри IDE, и реальные клиенты не видят его, но я все же хотел бы знать, как это исправить, потому что мне нравится чистота и Мне нравится знать, как все работает.)
Есть ли правильный способ сказать m2eclipse не развертывать этот файл или сказать Eclipse, чтобы он не позволял m2eclipse иметь последнее слово в зависимости от того, какие зависимости являются зависимостями времени выполнения?
Я нашел https://issues.sonatype.org/browse/MNGECLIPSE-1193, который упоминает
контейнер «Maven Dependencies» отражает объем времени компиляции теста, поэтому он должен иметь зависимости с «предоставленной» областью