Что такое упаковка " pom " в maven?
мне дали проект maven для компиляции и развертывания на сервере tomcat. Я никогда не использовал maven до сегодняшнего дня, но я гуглил совсем немного. Это похоже на верхний уровень pom.xml файлы в этом проекте имеют тип упаковки, установленный как pom.
что я должен делать после mvn install чтобы получить это приложение развернуто? Я ожидал, что смогу найти war файл где-то или что-то, но я думаю, что я ищу в неправильном месте или отсутствует шаг.
10 ответов:
pomв основном является контейнером подмодулей, каждый подмодуль представлен подкаталогом в том же каталоге, что иpom.xmlСpomупаковки.где-то, вложенные в структуру проекта, вы найдете артефакты (модули) с
warупаковки. Мэйвен, как правило, выстраивает все в/targetподкаталоги каждого модуля. Так что послеmvn installпосмотреть вtargetподкаталог в модуле сwarупаковки.Of конечно:
$ find . -iname "*.war"работает одинаково хорошо ;-).
упаковка pom-это просто спецификация, в которой говорится, что первичный артефакт-это не война или кувшин, а pom.сам xml.
часто он используется в сочетании с "модулями", которые обычно содержатся в подкаталогах рассматриваемого проекта; однако он также может использоваться в некоторых сценариях, где не предполагалось создавать первичный двоичный файл, все другие важные артефакты были объявлены как вторичные артефакты
подумайте о проекте " документация, первичный артефакт может быть PDF, но он уже построен, и работа по объявлению его в качестве вторичного артефакта может потребоваться по конфигурации, чтобы сообщить maven, как построить PDF, который не нуждается в компиляции.
упаковка
pomиспользуется в проектах, которые объединяют другие проекты, и в проектах, единственным полезным результатом которых является прикрепленный артефакт из какого-либо плагина. В вашем случае, я бы Угадай что ваш POM верхнего уровня включает<modules>...</modules>для агрегирования других каталогов, и фактический вывод является результатом одного из других (вероятно, суб-) каталогов. Он будет, если кодируется разумно для этой цели, иметь упаковкуwar.
для того, чтобы просто ответить на ваш вопрос, когда вы делаете mvn: install, maven создаст упакованный артефакт на основе (упаковка атрибут в pom.xml), после запуска установки maven вы можете найти файл.расширение пакета
- в целевом каталоге рабочей области проекта
- и Maven 2 local repository поиск (.m2 / respository) в вашем ящике указан ваш артефакт.м2 репозиторий под (groupId / artifactId / artifactId-version.упаковка каталог)
- если вы посмотрите в каталоге, вы найдете упакованный файл расширения, а также расширение pom (расширение pom-это в основном pom.xml используется для создания этого пакета)
- если ваш проект maven является многомодульным, каждый модуль будет иметь два файла, как описано выше, за исключением проекта верхнего уровня, который будет иметь только pom
упаковка артефакта как POM означает, что он имеет очень простой жизненный цикл
package -> install -> deployhttp://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
это полезно, если вы развертываете пом.xml-файл или проект, который не соответствует другим типам упаковки.
мы используем упаковку пом для много из наших проектов и связываем дополнительные участки и цели по мере необходимости.
например, некоторые из наших приложений использование:
prepare-package -> test -> package -> install -> deployкогда вы mvn установить приложение, оно должно добавить его в локально .хранилище м2. Для публикации в другом месте необходимо настроить правильную информацию управления распространением. Возможно, Вам также потребуется использовать плагин Maven builder helper, если артефакты не будут автоматически подключены 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) должны быть объединены в конечном итоге. Такой пом верхнего уровня.xml может использовать упаковку pom.
my-webapp может есть война упаковки и может иметь зависимость от my-app. my-app может иметь упаковку jar.
реальный случай использования
в Java-тяжелой компании у нас был проект python, который должен был войти в хранилище артефактов Nexus. Python на самом деле не имеет артефактов, поэтому просто хотел .смола или. zip файлы python и нажмите. В репо уже была интеграция maven, поэтому мы использовали
<packaging>pom</packaging>целеуказатель с плагин сборки maven чтобы упаковать проект python как.zipи загрузить его.шаги описаны в этом разделе так пост
https://maven.apache.org/pom.html
тип упаковки, необходимый для POM для родительских и агрегационных (многомодульных) проектов. Эти типы определяют цели, связанные с набором этапов жизненного цикла. Например, если упаковка является jar, то фаза пакета будет выполнять цель jar:jar. Если упаковка pom, то цель будет выполнена site: attach-descriptor
POM (Project Object Model) - это не что иное, как скрипт автоматизации для построения проекта, мы можем написать скрипт автоматизации в XML, файлы сценариев построения называются по-разному в разных инструментах автоматизации
Как мы называем build.xml в ANT, pom.xml в MAVEN
MAVEN может упаковывать банки, войны, уши и Пом, которые являются новой вещью для всех нас
Если вы хотите проверить ЧТО ТАКОЕ ПОМ.XML
упаковка"pom" - это не что иное, как контейнер, который содержит другие пакеты/модули, такие как jar, war и ear.
Если вы выполняете какую-либо операцию на внешнем пакете/контейнере, например mvn clean compile install. затем внутренние пакеты / модули также получают чистую установку компиляции.
нет необходимости выполнять отдельную операцию для каждого пакета/модуля.
Comments