Что такое "пом" упаковка в Maven? - PullRequest
152 голосов
/ 07 октября 2011

Мне дали проект maven для компиляции и установки на сервере Tomcat. Я никогда не использовал Maven до сегодняшнего дня, но я немного гуглил. Похоже, что для файлов верхнего уровня pom.xml в этом проекте тип упаковки установлен как pom.

Что я должен делать после mvn install для развертывания этого приложения? Я ожидал, что смогу найти файл war где-нибудь или что-то, но я думаю, что я смотрю не в том месте или пропускаю шаг.

Ответы [ 10 ]

131 голосов
/ 07 октября 2011

pom - это в основном контейнер подмодулей, каждый подмодуль представлен подкаталогом в том же каталоге, что и pom.xml с pom упаковкой.

Где-то во вложенной в структуру проекта вы найдете артефакты (модули) с war упаковкой. Обычно Maven встраивает все в подкаталоги /target каждого модуля. Поэтому после mvn install загляните в подкаталог target в модуле с war упаковкой.

Конечно:

$ find . -iname "*.war"

одинаково хорошо работает; -).

41 голосов
/ 17 июля 2012

pom-упаковка - это просто спецификация, в которой говорится, что основным артефактом является не война или фляга, а сам pom.xml.

Часто он используется в сочетании с «модулями», которые обычно содержатся в подпрограмме.-каталоги рассматриваемого проекта;тем не менее, он также может использоваться в определенных сценариях, где не предполагалось создание первичного двоичного файла, все другие важные артефакты были объявлены как вторичные артефакты

Представьте себе проект «документации», основным артефактом может бытьPDF, но он уже создан, и может потребоваться работа по объявлению его вторичным артефактом поверх конфигурации, чтобы сообщить maven, как создать PDF, который не нужно компилировать.

21 голосов
/ 07 октября 2011

Упаковка pom используется в проектах, которые объединяют другие проекты, и в проектах, единственным полезным выводом которых является прикрепленный артефакт из какого-либо плагина.В вашем случае я бы предположил , что ваш pom верхнего уровня включает <modules>...</modules> для агрегирования других каталогов, а фактический вывод является результатом одного из других (возможно, под) каталогов.В случае разумного кодирования он будет иметь упаковку war.

8 голосов
/ 08 октября 2011

Чтобы просто ответить на ваш вопрос, когда вы выполните mvn: install , maven создаст упакованный артефакт на основе ( package атрибута в pom.xml), после того, как вы запустите mavenустановить вы можете найти файл с расширением .package

  • в целевой директории рабочей области проекта
  • Также там, где ваш maven 2 локальный репозиторий ищет ( .m2 / respository ) на вашем боксе. Ваш артефакт указан в хранилище .m2 в каталоге ( groupId / artifactId / artifactId-version.packaging )
  • Если вы посмотритев каталоге вы найдете упакованный файл расширения, а также расширение pom (расширение pom - это, в основном, файл pom.xml, используемый для создания этого пакета)
  • Если ваш проект maven является многомодульным, каждый модуль будет иметь два файла, как описано вышеза исключением проекта верхнего уровня, который будет иметь только пом
7 голосов
/ 28 августа 2014

Упаковка артефакта в виде POM означает, что у него очень простой жизненный цикл

package -> install -> deploy

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Это полезно, если вы развертываете файл pom.xml или проект, который не подходит для других типов упаковки.

Мы используем упаковку «pom» для многих наших проектов и соответствующим образом привязываем дополнительные этапы и цели.

Например, некоторые из наших приложений используют:

prepare-package -> test -> package -> install -> deploy

Когда вы устанавливаете приложение mvn, оно должно добавить его в локальный репозиторий .m2. Для публикации в другом месте вам потребуется настроить правильную информацию об управлении распространением. Вам также может понадобиться использовать вспомогательный плагин maven builder, если артефакты не присоединяются автоматически Maven.

3 голосов
/ 09 апреля 2015

Предлагаю посмотреть классический пример по адресу: http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once

Здесь my-webapp - это веб-проект, который зависит от кода в проекте my-app.Итак, чтобы объединить два проекта в один, у нас есть верхний уровень pom.xml, в котором указано, какие проекты (модули согласно терминологии maven) должны быть окончательно объединены.Такой pom.xml верхнего уровня может использовать упаковку pom.

my-webapp может иметь упаковку war и может зависеть от my-app.my-app может иметь упаковку в банку.

1 голос
/ 08 апреля 2018

https://maven.apache.org/pom.html

Тип упаковки должен быть pom для родительских и агрегированных (многомодульных) проектов.Эти типы определяют цели, связанные с набором этапов жизненного цикла.Например, если упаковка является jar, то фаза пакета выполнит цель jar: jar.Если упаковка pom, выполняемой целью будет сайт: attach-descriptor

1 голос
/ 05 января 2018

Реальный сценарий использования

В компании с большим количеством Java у нас был проект на python, который должен был войти в хранилище артефактов Nexus.Python на самом деле не имеет артефактов, поэтому просто хотел .tar или .zip файлы python и нажать.В репозитории уже была интеграция с Maven, поэтому мы использовали обозначение <packaging>pom</packaging> с плагином сборки maven , чтобы упаковать проект Python в .zip и загрузить его.

Шаги описаны вэто ТАК сообщение

0 голосов
/ 23 февраля 2018

Упаковка «pom» - это не что иное, как контейнер, который содержит другие пакеты / модули, такие как jar, war и ear.

, если вы выполняете какие-либо операции с внешним пакетом / контейнером, такие как mvn clean compile install.затем внутренние пакеты / модули также получают чистую компиляцию.

нет необходимости выполнять отдельную операцию для каждого пакета / модуля.

0 голосов
/ 15 сентября 2014

POM (Project Object Model) - это не что иное, как скрипт автоматизации для построения проекта, мы можем написать скрипт автоматизации в XML, файлы сценариев построения имеют разные имена в различных инструментах автоматизации

как мы называем build.xml в ANT, pom.xml в MAVEN

MAVEN может упаковывать банки, войны, уши и POM, что для нас всех новое

если вы хотите проверить ЧТО ТАКОЕ POM.XML

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