Мое понимание спецификации Pomegranate Draft таково:
Контейнеры сервлетов могут использовать гранат в качестве дополнения к WEB-INF/lib
со следующими преимуществами:
- Совместно используемые файлы .jar в общем хранилище, упрощая управление и уменьшая размеры .war
- Разрешение зависимостей библиотеки, включая возможность обрабатывать несовместимости субмодулей
- Знакомые файлы pom.xml Maven, чтобы воспользоваться преимуществами текущей практики разработки.
- Дополнительная интеграция с контейнерами веб-приложений Servlet
- Дополнительная интеграция с менеджерами Java CanDI (JSR-299)
[...]
Веб-приложение может содержать необязательный WEB-INF/pom.xml
, объявляющий собственные зависимости веб-приложения.
Так что я думаю, что идея состоит в том, чтобы пометить зависимости как «предоставленные» в войне pom.xml
и добавить их в WEB-INF/pom.xml
для развертывания на Ресине. Я не проверял это, хотя, так что я могу ошибаться.
На самом деле, этот гранат выглядит интересно, но я пока не совсем понял. Хотя я понимаю его преимущества, кажется, что WAR не переносим, что является большим недостатком. Я буду копать немного дальше ...
(РЕДАКТИРОВАТЬ: я помещаю ответ на комментарий от ОП ниже)
Если честно, я не нахожу черновой вариант спецификации. Тем не менее, я нашел этот пост pomegranate modules в блоге Caucho, в котором подробно рассказывается, как заставить его работать для веб-приложения:
Гранат предназначен для решения
управление версиями и загрузчик классов
проблемы из предприятия-приложения
перспектива. Хотя мы делаем
немного магии загрузчика за
сцены, перспектива разработчика
довольно просто и чисто:
- удалите банки из .war
- поместите их в каталог jar-файлов Resin
- объявить зависимости jar в файлах pom Maven
- импортируйте их в свое веб-приложение с помощью WEB-INF / pom.xml или в свой
Смола-web.xml * +1049 *
По крайней мере, я понимаю эти шаги, и они отвечают на ваш вопрос: вам нужно вручную удалить файлы jar в каталоге проекта Resin jars Это не то, чего я ожидал, но я думаю, что неправильно понял, что такое гранат. Если я не ошибаюсь, гранат - это своего рода альтернатива OSGI, речь идет о связывании модулей и загрузке классов вуду. В нем используются соглашения Maven для описания зависимостей, но речь идет не об управлении зависимостями.