Когда использовать WEB-INF, а когда META-INF?

В корне архива java-приложения часто встречаются директории WEB-INF и META-INF. Обе директории хранят в себе различные файлы с метаинформацией о программе, обычно в текстовом виде: yaml, xml, json, обычный текст.

META-INF используется в архивах всех типов. Главный файл этой директории – MANIFEST.MF, о котором уже говорили ранее. Там же хранятся
  • Объявления провайдеров SPI;
  • Подпись архива: файлы .SF, .DSA, .RSA;
  • INDEX.LIST с подсказками о местонахождении пакетов для загрузчика.
  • Иногда (не часто) приложения добавляют туда свои статические ресурсы, так как эта директория попадает в classpath и доступна в рантайме.

WEB-INF используется только в web-архивах (.war). Она не заменяет, но дополняет META-INF. В ней хранится:
  • Главный файл web-приложения web.xml;
  • Дескрипторы тегов .TLD;
  • Поддиректория classes/ с классами web-приложения;
  • Поддиректория lib/ с .jar-библиотеками зависимостей;
  • Поддиректория tag/ с файлами тегов.