В maven2, как мне собрать кусочки разных модулей для создания окончательных дистрибутивов? - PullRequest
2 голосов
/ 05 мая 2010

У меня четыре проекта Maven:

  1. клиент api jar
  2. веб-сервис войны
  3. UI JAR
  4. война веб-интерфейса

Сервисная война должна быть упакована, чтобы включать в себя клиентский api jar вместе с javadocs (чтобы каждая версия сервиса распространялась вместе с клиентским jar и веб-документацией). Войне веб-интерфейса потребуются пользовательский интерфейс и все зависимости (развертывание веб-запуска / апплета).

Так что мне нужен 5-й проект, который делает всю упаковку. Как это сделать с помощью муравья или сценария мне совершенно ясно, но не в maven.

Я попробовал следующее:

  • включение javadocs в состав пакета war: для этого требуется выполнение цели javadocs в проекте 1 перед выполнением пакета в проекте 2. Не найдено способа связать плагины / цели в разных проектах. При использовании плагина сборки в project2 возникла та же проблема.
  • создайте пятый проект и используйте плагин сборки. Все те же проблемы, что и раньше, с той проблемой, что из-за того, что мне нужны разные части из каждого подпроекта, я не понимаю, как это можно сделать с помощью сборки.

Это слишком сложно сделать в Maven, и я должен просто сдаться? Или я смотрю на это неправильно, в таком случае, как я должен смотреть на это?

Спасибо!


При дальнейшем размышлении приведем частичный ответ:

  • Каждый проект должен создавать все свои артефакты. Это делается с помощью настройки плагинов в соответствии с фазами prepare-resources и package. Итак, в моем случае я готовлю все , которые должны быть сгенерированы (jar, javadocs, документация xsd, ...), как различные артефакты, так что выполнение цели с помощью одного "пакета" создает все. Таким образом, дело не в том, «как проект 2 заставляет проект 1 выполнять разные цели», а в том, чтобы «проект 1 создал весь свой артефакт как часть обычного жизненного цикла).

Ответы [ 2 ]

1 голос
/ 05 мая 2010

Первое, что я вижу в вашем описании, вы смешиваете вещи. Пакет API клиента (фаза пакета) без проблем. Но теперь вы хотели бы сделать client-api.jar, который включает в себя JavaDocs? Это немного странно. Почему бы не создать два артефакта (client-api-1.0.jar и client-api-1.0-javadoc.tar.gz)? Отношения между этими двумя артефактами - это номер релиза. Эту проблему можно решить, изучив FAQ по плагину Maven Assembly

Во-вторых, вы упомянули «веб-интерфейс», что это может быть достигнуто также с помощью плагина сборки (посмотрите документы). Возможно, вы можете опубликовать имеющуюся у вас помпу, чтобы мы могли помочь вам более подробно.

Кстати: для этого тебе не нужен муравей. Maven может справиться с этим.

0 голосов
/ 05 мая 2010

Сервисная война должна быть упакована, чтобы включать в себя клиентский api jar вместе с javadocs (чтобы каждая версия службы распространялась с прилагаемым клиентским jar и веб-документацией)

Вам нужно будет создать исходный файл jar клиентского проекта и включить этот исходный файл jar в конфигурацию плагина javadoc в модуле war. Шаги и конфигурация различных частей описаны в Агрегирование Javadocs из источников зависимости .

Войне веб-интерфейса потребуются пользовательский интерфейс и все зависимости (развертывание веб-запуска / апплета).

Для апплета, который должен быть загружаемым, используйте dependency:copy, чтобы скопировать его в «правильном» месте внутри вашего веб-приложения во время pre-package. См. Страницу использование . Для приложения веб-запуска посмотрите Добавление приложений JNLPs в существующую WAR .

Итак, мне нужен 5-й проект, который выполняет всю упаковку (...), так как мне нужны разные части для каждого подпроекта, я не понимаю, как это можно сделать с помощью сборки.

Использование выделенного модуля - определенно способ создания сборки, включающей артефакты, произведенные другими модулями, или даже сборки других модулей.

Я не уверен на 100%, но создание сборки сборок , вероятно, я бы сделал здесь. По сути, это означает настройку Maven для создания сборки каждого модуля , которую вы хотите собрать в окончательном комплекте, возможно, с использованием предопределенного дескриптора сборки bin или модифицированной версии (для связать банку или войну, javadoc и т. д.). А затем собрать сборки с помощью зависимостей сборки в выделенном модуле (распаковать их, отфильтровать то, что вы хотите или не хотите, упаковать отфильтрованный результат). Для этого потребуется потратить некоторое время на пользовательский дескриптор сборки , но это определенно возможно. Трудно быть более точным, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...