Resin's `pomegranate '- автоматическая загрузка зависимостей maven jar для проекта - но как сгенерировать jar с pom.xml для них? - PullRequest
1 голос
/ 02 ноября 2009

Java-сервер Resin имеет удобную функцию, которую они называют гранатом (http://www.caucho.com/projects/pomegranate/), которая позволяет просто помещать различные зависимости jar в каталог сервера (project-jars /), а затем загружать их для веб-приложения из файл pom.xml.

Вопрос в том, как я должен поставить банки на проектные банки из смолы? (просто копирование их не работает)

подробности:

У меня есть рабочий проект с maven, со всеми зависимостями, настроенными в Проекты pom.xml файл. Я могу построить войну веб-приложений и т. Д.

Я скопировал файлы jar в jar-файлы смолы, так как они были сгенерированы maven для этого конкретного веб-приложения.

Когда я разворачиваю войну, смола замечает pom.xml и пытается решить зависимости; к сожалению, он не может найти какие-либо артефакты в его хранилище (проект-банки).

Полагаю, это потому, что все банки, которые я там поставил, не имеют Файлы META-INF / maven / pom.xml, упакованные в них. Они просто нормальные банки как те, которые загружены Maven.

На веб-сайте граната говорят, что смола сканирует проектные фляги для фляг с файлами pom.xml, чтобы определить их версии.

Как мне создать jar-файлы с включенными файлами pom.xml?

Или я должен вручную скопировать файлы foo-bar-1.0.pom из репозитория на моем devel машина к каталогу смол проектных банок? (какой тип превосходит цель всех авто-магии)

Спасибо за ответ,

С наилучшими пожеланиями

Гораций

1 Ответ

2 голосов
/ 03 ноября 2009

Мое понимание спецификации 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, в котором подробно рассказывается, как заставить его работать для веб-приложения:

Гранат предназначен для решения управление версиями и загрузчик классов проблемы из предприятия-приложения перспектива. Хотя мы делаем немного магии загрузчика за сцены, перспектива разработчика довольно просто и чисто:

  1. удалите банки из .war
  2. поместите их в каталог jar-файлов Resin
  3. объявить зависимости jar в файлах pom Maven
  4. импортируйте их в свое веб-приложение с помощью WEB-INF / pom.xml или в свой Смола-web.xml * +1049 *

По крайней мере, я понимаю эти шаги, и они отвечают на ваш вопрос: вам нужно вручную удалить файлы jar в каталоге проекта Resin jars Это не то, чего я ожидал, но я думаю, что неправильно понял, что такое гранат. Если я не ошибаюсь, гранат - это своего рода альтернатива OSGI, речь идет о связывании модулей и загрузке классов вуду. В нем используются соглашения Maven для описания зависимостей, но речь идет не об управлении зависимостями.

...