Я использую Eclipse + Maven + m2eclipse для сборки и тестирования веб-приложения в Apache Tomcat.
Я настроил сервер Tomcat в Eclipse и настроил сборку развертывания для моего веб-приложения, включая «Зависимости Maven» (специализация записей пути сборки Java).
Когда я развертываю и запускаю сервер, Tomcat / Catalina всегда предупреждает меня:
ИНФОРМАЦИЯ: validateJarFile (/projects/src/main/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapp/WEB-INF/lib/servlet-api-2.5. баночка) - баночка не загружена. См. Servlet Spec 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" отражает область времени тестовой компиляции, поэтому он должен иметь зависимости с областью "обеспечен"