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