Лучший ответ будет "это зависит ...".
В случае, если вы запускаете другие веб-приложения, использующие те же третьи стороны, было бы неплохо разместить эти файлы в некотором общем расположении (такой каталог есть на всех серверах приложений).Классы, которые нужны вашему веб-приложению во время выполнения, будут загружены из этого общего расположения и будут доступны для вашего веб-приложения.Такой подход сделает вашу войну меньше и сократит время развертывания.
Пример: у вас есть webapp1 и webapp2, использующие jsf-api.jar - нет причин упаковывать этот jar в оба - вы можете выбросить его в общую библиотеку.В ситуации, которую вы описываете с 3 банками против 20 банок, я бы использовал некоторый инструмент для анализа графа зависимостей вашего приложения (чтобы упаковать как можно меньше).Инструмент для работы с графиком зависимостей, с которым я работал: CDA - анализатор зависимостей классов - это внешний инструмент, который генерирует графики зависимостей намного более читабельными, чем Classycle Eclipse-плагин или представление зависимостей класса Eclipse. (Возможно, другоеВ IDE есть лучшие инструменты? Я думаю, что IntelliJ делает ...)
Однако, если разные веб-приложения используют разные версии одного и того же стороннего фляги, вы можете столкнуться с конфликтами версий.Разрешение этих коллизий может быть PITA , и вам нужно будет понять, как работает механизм развертывания поставщика сервера приложений (политики загрузки классов как для компонента, так и для приложения).Таким образом, самым безопасным () будет включение нужных банок в WEB-INF \ lib вашей войны.