Что такое упаковка "pom" в maven?

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

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

Ответ 1

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

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

Конечно:

$ find . -iname "*.war"

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

Упаковка артефакта как 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.

Ответ 6

Я предлагаю посмотреть классический пример: 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 может иметь военную упаковку и может иметь зависимость от моего приложения. у моего приложения может быть упаковка в банке.

Ответ 7

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

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

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

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