Мне дали проект maven для компиляции и установки на сервере Tomcat. Я никогда не использовал Maven до сегодняшнего дня, но я немного гуглил. Похоже, что для pom.xml
файлов верхнего уровня в этом проекте установлен тип упаковки pom
.
Что я должен делать после mvn install
развертывания этого приложения? Я ожидал, что смогу найти war
файл где-нибудь или что-то, но я думаю, что я смотрю в неправильном месте или пропускаю шаг.
Ответы:
pom
в основном это контейнер подмодулей, каждый подмодуль представлен подкаталогом в том же каталоге, чтоpom.xml
иpom
упаковка.Где-то во вложенной в структуру проекта вы найдете артефакты (модули) с
war
упаковкой. Обычно Maven встраивает все в/target
подкаталоги каждого модуля. Поэтому послеmvn install
загляните вtarget
подкаталог в модуле сwar
упаковкой.Конечно:
работает одинаково хорошо ;-).
источник
Упаковка pom - это просто спецификация, в которой говорится, что основным артефактом является не война или баночка, а сам pom.xml.
Часто он используется вместе с «модулями», которые обычно содержатся в подкаталогах рассматриваемого проекта; тем не менее, он также может использоваться в определенных сценариях, где не предполагалось создание первичного двоичного файла, все другие важные артефакты были объявлены как вторичные артефакты.
Подумайте о проекте «документация», основным артефактом может быть PDF, но он уже создан, и может потребоваться работа по объявлению его вторичным артефактом в конфигурации, чтобы сообщить maven, как создавать PDF, который не нужен. скомпилирован.
источник
Упаковка
pom
используется в проектах, которые объединяют другие проекты, и в проектах, единственным полезным выводом которых является прикрепленный артефакт из какого-либо плагина. В вашем случае, я предполагаю, что ваш pom верхнего уровня включает<modules>...</modules>
в себя агрегирование других каталогов, а фактический вывод является результатом одного из других (возможно, под) каталогов. Это будет, если разумно закодировано для этой цели, иметь упаковкуwar
.источник
Чтобы просто ответить на ваш вопрос при выполнении mvn: install , maven создаст упакованный артефакт на основе ( атрибут упаковки в pom.xml). После запуска установки maven вы можете найти файл с расширением .package.
источник
Упаковка артефакта в виде POM означает, что у него очень простой жизненный цикл
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Это полезно, если вы развертываете файл pom.xml или проект, который не подходит для других типов упаковки.
Мы используем упаковку pom для многих наших проектов и привязываем дополнительные фазы и цели в зависимости от ситуации.
Например, некоторые из наших приложений используют:
Когда вы устанавливаете mvn, приложение должно добавить его в локальный репозиторий .m2. Для публикации в другом месте вам необходимо настроить правильную информацию об управлении распространением. Вам также может понадобиться использовать вспомогательный плагин maven builder, если артефакты не присоединяются автоматически к Maven.
источник
Я предлагаю посмотреть классический пример по адресу: 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 может иметь упаковку для банок.
источник
Реальный вариант использования
В Java-тяжелой компании у нас был проект Python, который должен был войти в репозиторий артефактов Nexus. Python на самом деле не имеет артефактов, поэтому просто хотел .tar или .zip файлы python и нажать. В репозитории уже была интеграция с Maven, поэтому мы использовали
<packaging>pom</packaging>
указатель с плагином сборки Maven для упаковки проекта Python как.zip
и загрузки его.Шаги изложены в этом посте SO
источник
Упаковка «pom» - это не что иное, как контейнер, который содержит другие пакеты / модули, такие как jar, war и ear.
если вы выполняете какие-либо операции с внешним пакетом / контейнером, такие как mvn clean compile install. тогда внутренние пакеты / модули также получают чистую установку компиляции.
нет необходимости выполнять отдельную операцию для каждого пакета / модуля.
источник
https://maven.apache.org/pom.html
Тип упаковки должен быть pom для родительских и агрегированных (многомодульных) проектов. Эти типы определяют цели, связанные с набором этапов жизненного цикла. Например, если упаковка - это jar, то фаза пакета выполнит цель jar: jar. Если упаковка pom, выполняемой целью будет сайт: attach-descriptor
источник
POM (Project Object Model) - это не что иное, как сценарий автоматизации для построения проекта, мы можем написать сценарий автоматизации в XML, файлы сценариев построения названы по-разному в различных инструментах автоматизации
как мы называем build.xml в ANT, pom.xml в MAVEN
MAVEN может упаковывать банки, войны, уши и POM, что является новым для всех нас
если хочешь проверь что такое POM.XML
источник