~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ F4B53C54C17954CB19A54FFE7B261772__1712875380 ✰
Заголовок документа оригинал.:
✰ Apache Maven - Wikipedia ✰
Заголовок документа перевод.:
✰ Апач Maven — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Apache_Maven ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/f4/72/f4b53c54c17954cb19a54ffe7b261772.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/f4/72/f4b53c54c17954cb19a54ffe7b261772__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 13:03:44 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 12 April 2024, at 01:43 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Апач Maven — Википедия Jump to content

Апач Мавен

Из Википедии, бесплатной энциклопедии
Апач Мавен
Разработчики) Фонд программного обеспечения Apache
Начальная версия 13 июля 2004 г .; 19 лет назад ( 13 июля 2004 г. )
Стабильная версия
3.9.7 [1] [2]  Отредактируйте это в Викиданных/ 22 мая 2024 г .; 23 дня назад ( 22 мая 2024 г. )
Репозиторий
Написано в Джава
Тип Инструмент сборки
Лицензия Лицензия Апач 2.0
Веб-сайт знаток .apache .org

Maven — это инструмент автоматизации сборки , используемый в основном для Java проектов . Maven также можно использовать для создания и управления проектами, написанными на C# , Ruby , Scala и других языках. Проект Maven поддерживается The Apache Software Foundation , где он ранее был частью проекта Jakarta .

Maven рассматривает два аспекта создания программного обеспечения: способ создания программного обеспечения и его зависимости. В отличие от более ранних инструментов, таких как Apache Ant , он использует соглашения для процедуры сборки. Необходимо указать только исключения. XML - файл описывает собираемый программный проект, его зависимости от других внешних модулей и компонентов, порядок сборки, каталоги и необходимые плагины . Он поставляется с заранее определенными целями для выполнения определенных четко определенных задач, таких как компиляция кода и его упаковка. Maven динамически загружает библиотеки Java и подключаемые модули Maven из одного или нескольких репозиториев, таких как центральный репозиторий Maven 2, и сохраняет их в локальном кеше. [3] Этот локальный кэш загруженных артефактов также можно обновлять артефактами, созданными локальными проектами. Публичные репозитории также можно обновлять.

Maven построен с использованием архитектуры на основе плагинов, которая позволяет использовать любое приложение, управляемое через стандартный ввод. C / C ++ . Для Maven 2 поддерживается собственный плагин [4]

Альтернативные технологии, такие как Gradle и sbt, в качестве инструментов сборки не полагаются на XML , но сохраняют ключевые концепции, представленные Maven. В Apache Ivy также был разработан специальный менеджер зависимостей, который также поддерживает репозитории Maven. [5]

Apache Maven поддерживает воспроизводимые сборки . [6] [7]

История [ править ]

Количество артефактов в центральном репозитории Maven быстро росло.

Maven был создан Джейсоном ван Зилом в 2002 году и начинался как подпроект Apache Turbine . высшего уровня В 2003 году Maven был принят в качестве проекта Apache Software Foundation .

История версий:

  • Версия 1 — июль 2004 г. — первый важный выпуск (сейчас срок его эксплуатации истек).
  • Версия 2 — октябрь 2005 г. — примерно через шесть месяцев в бета-циклах (сейчас срок службы истек).
  • Версия 3 — октябрь 2010 г. — остается в основном обратно совместимой с проектами Maven 2. Изменения включали переработку основного Project Builder и поддержку параллельных сборок. Переработка ядра разделила файловое представление и представление в памяти и позволила надстройкам использовать файлы определения проекта, не основанные на XML. Предлагаемые языки включают Ruby (уже в частном прототипе Джейсона ван Зила), YAML и Groovy . Функция параллельной сборки использует настраиваемое количество ядер на многоядерной машине и особенно подходит для крупных многомодульных проектов.
  • Версия 4 — в настоящее время находится в стадии альфа-разработки (по состоянию на конец 2023 г.).

Синтаксис [ править ]

Проекты Maven настраиваются с использованием объектной модели проекта (POM) в pom.xml файл.

Пример файла:

<project> 
   <!-- версия модели всегда равна 4.0.0 для POM Maven 2.x --> 
   <modelVersion>  4.0.0  </modelVersion> 
  
   <!-- координаты проекта, т. е. группа значений, которые однозначно идентифицируют этот проект --> 
   <groupId>  com.mycompany.app  </groupId> 
   <artifactId>  my-app  </artifactId> 
   <version>  1.0  </version> 

   <!-- зависимости библиотеки --> < 
   зависимости> 

       <!-- координаты необходимой библиотеки. 
  Область действия — «тест», что указывает на то, что библиотека 
 используется только для запуска тестов.   --> 
       <dependent> 
           <groupId>  org.junit.jupiter  </groupId> 
           <artifactId>  junit-jupiter-engine  </artifactId> 
           <version>  5.9.1  </version> 
           <scope>  test  </scope> 
       </ зависимость> < 

   /зависимости> 
 </проект> 

Этот POM определяет уникальный идентификатор проекта ( координаты ) и единственную зависимость от библиотеки JUnit . Однако этого уже достаточно для сборки проекта и выполнения модульных тестов связанных с ним . Maven достигает этого, используя идею Соглашения над Конфигурацией , то есть Maven предоставляет значения по умолчанию для конфигурации проекта.

Структура каталогов обычного идиоматического проекта Maven имеет следующие записи каталогов:

Структура каталогов для проекта Java, автоматически созданная Maven.
Имя каталога Цель
проект дома Содержит pom.xml и все подкаталоги.
src/main/java Содержит исходный код Java для проекта.
src/main/resources Содержит доставляемые ресурсы для проекта, такие как файлы свойств.
src/test/java Содержит исходный код Java для тестирования (например, тестовые примеры JUnit или TestNG) для проекта.
src/test/resources Содержит ресурсы, необходимые для тестирования.

Команда mvn package скомпилирует все файлы Java, выполнит все тесты и упакует готовый код и ресурсы в target/my-app-1.0.jar (при условии, что идентификатор артефакта — мое приложение, а версия — 1.0.)

Используя Maven, пользователь предоставляет только конфигурацию проекта, в то время как настраиваемые плагины выполняют фактическую работу по компиляции проекта, очистке целевых каталогов, запуску модульных тестов, созданию документации API и так далее. В общем, пользователям не придется писать плагины самостоятельно. Сравните это с Ant и make , в которых пишутся императивные процедуры для выполнения вышеупомянутых задач.

Дизайн [ править ]

Объектная модель проекта [ править ]

Объектная модель проекта (POM) [8] предоставляет всю конфигурацию для одного проекта. Общая конфигурация охватывает имя проекта, его владельца и его зависимости от других проектов. Также можно настроить отдельные этапы процесса сборки, которые реализованы в виде плагинов . Например, можно настроить плагин-компилятор на использование Java версии 1.5 для компиляции или указать упаковку проекта, даже если некоторые модульные тесты не пройдены.

Более крупные проекты следует разделить на несколько модулей или подпроектов, каждый со своим POM. Затем можно написать корневой POM, с помощью которого можно скомпилировать все модули одной командой. POM также могут наследовать конфигурацию от других POM. Все POM наследуются от Super POM. [9] по умолчанию. Super POM предоставляет конфигурацию по умолчанию, такую ​​как исходные каталоги по умолчанию, плагины по умолчанию и т. д.

Плагины [ править ]

Большая часть функциональности Maven находится в плагинах . Плагин предоставляет набор целей, которые можно выполнить с помощью команды mvn [plugin-name]:[goal-name]. Например, проект Java можно скомпилировать с помощью цели компиляции плагина компилятора. [10] запустив mvn compiler:compile.

Существуют плагины Maven для сборки, тестирования, управления исходным кодом, запуска веб-сервера, создания файлов проекта Eclipse и многого другого. [11] Плагины представлены и настроены в разделе <plugins> файла pom.xmlфайл. Некоторые базовые плагины включены в каждый проект по умолчанию и имеют разумные настройки по умолчанию.

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

  • mvn compiler:compile
  • mvn surefire:test
  • mvn jar:jar

Концепция жизненного цикла Maven решает эту проблему.

Плагины — это основной способ расширения Maven. Разработку плагина Maven можно выполнить путем расширения класса org.apache.maven.plugin.AbstractMojo. Пример кода и объяснение плагина Maven для создания облачной виртуальной машины с сервером приложений приведены в статье Автоматизация разработки и управления облачными виртуальными машинами . [12]

Жизненные циклы сборки [ править ]

Жизненный цикл сборки представляет собой список именованных этапов , которые можно использовать для упорядочения выполнения цели. Одним из трех стандартных жизненных циклов Maven является жизненный цикл по умолчанию , который включает в себя следующие этапы, выполняемые в указанном порядке: [13]

  • подтвердить
  • генерировать-источники
  • источники процессов
  • генерировать ресурсы
  • процесс-ресурсы
  • компилировать
  • исходники-процессов-тестов
  • процесс-тест-ресурсы
  • тестовая компиляция
  • тест
  • упаковка
  • установить
  • развертывать

Цели, предоставляемые плагинами, могут быть связаны с разными этапами жизненного цикла. Например, по умолчанию цель compiler:compile связано с compile фаза, а цель surefire:test связано с testфаза. Когда mvn test команда выполняется, Maven выполняет все цели, связанные с каждой фазой, вплоть до testфаза. В таком случае Maven запускает resources:resources цель, связанная с process-resources фаза, тогда compiler:compileи так далее, пока, наконец, не запустится surefire:test цель.

В Maven также есть стандартные этапы очистки проекта и создания сайта проекта. Если бы очистка была частью жизненного цикла по умолчанию, проект очищался бы каждый раз при его сборке. Это явно нежелательно, поэтому очистка имеет собственный жизненный цикл.

Стандартные жизненные циклы дают пользователям, впервые участвующим в проекте, возможность точно собирать, тестировать и устанавливать каждый проект Maven, введя одну команду. mvn install. По умолчанию Maven упаковывает файл POM в сгенерированные файлы JAR и WAR. Такие инструменты, как Diet4j [14] можно использовать эту информацию для рекурсивного разрешения и запуска модулей Maven во время выполнения без необходимости использования jar-файла uber, содержащего весь код проекта.

Зависимости [ править ]

Центральной функцией Maven является управление зависимостями . Механизм обработки зависимостей Maven организован вокруг системы координат, идентифицирующей отдельные артефакты, такие как программные библиотеки или модули. В приведенном выше примере POM координаты JUnit ссылаются на прямую зависимость проекта. Проект, которому нужна, скажем, библиотека Hibernate , просто должен объявить координаты проекта Hibernate в своем POM. Maven автоматически загрузит зависимость и те зависимости, которые нужны самому Hibernate (так называемые транзитивные зависимости ) и сохранит их в локальном репозитории пользователя. Maven 2 Центральный репозиторий [3] по умолчанию используется для поиска библиотек, но можно настроить используемые репозитории (например, частные репозитории компании) внутри POM.

Фундаментальное различие между Maven и Ant заключается в том, что дизайн Maven рассматривает все проекты как имеющие определенную структуру и набор поддерживаемых рабочих процессов задач (например, получение ресурсов из системы контроля версий, компиляция проекта, модульное тестирование и т. д.). Хотя большинство программных проектов фактически поддерживают эти операции и фактически имеют четко определенную структуру, Maven требует, чтобы эта структура и детали реализации операции были определены в файле POM. Таким образом, Maven опирается на соглашение о том, как определять проекты и на список рабочих процессов, которые обычно поддерживаются во всех проектах. [15]

Существуют поисковые системы, такие как The Central Repository Search Engine, [16] который можно использовать для определения координат различных библиотек и фреймворков с открытым исходным кодом.

Проекты, разработанные на одной машине, могут зависеть друг от друга через локальный репозиторий. Локальный репозиторий представляет собой простую структуру папок, которая действует как кэш для загруженных зависимостей и как централизованное место хранения локально созданных артефактов. Команда Maven mvn installсобирает проект и помещает его двоичные файлы в локальный репозиторий. Затем другие проекты смогут использовать этот проект, указав его координаты в своих POM.

Совместимость [ править ]

Существуют надстройки к нескольким популярным интегрированным средам разработки (IDE), ориентированным на язык программирования Java, которые обеспечивают интеграцию Maven с механизмом сборки IDE и инструментами редактирования исходного кода, позволяя Maven компилировать проекты из IDE, а также устанавливать путь к классам для завершение кода, выделение ошибок компилятора и т. д.

Примеры популярных IDE, поддерживающих разработку с помощью Maven, включают:

Эти надстройки также предоставляют возможность редактировать POM или использовать POM для определения полного набора зависимостей проекта непосредственно в IDE.

Некоторые встроенные функции IDE теряют силу, когда IDE больше не выполняет компиляцию. Например, JDT Eclipse имеет возможность перекомпилировать один исходный файл Java после его редактирования. Многие IDE работают с плоским набором проектов вместо иерархии папок, предпочитаемой Maven. Это усложняет использование систем SCM в IDE при использовании Maven. [17] [18] [19]

См. также [ править ]

Ссылки [ править ]

  1. ^ https://maven.apache.org/docs/3.9.7/release-notes.html . {{cite web}}: Отсутствует или пусто |title= ( помощь )
  2. ^ Ошибка: невозможно правильно отобразить ссылку. смотрите в документации . Подробности
  3. ^ Перейти обратно: а б «Индекс /maven2/» . Архивировано из оригинала 17 сентября 2018 г. Проверено 15 апреля 2009 г.
  4. ^ Лаугстол, Трюгве. «Нативный плагин MojoHaus для Maven» .
  5. ^ «IBiblio Resolver | Apache Ivy™» .
  6. ^ «Воспроизводимые/проверяемые сборки — Apache Maven — Apache Software Foundation» . cwiki.apache.org .
  7. ^ «Воспроизводимые сборки на Java — DZone Java» . dzone.com .
  8. ^ Справочник ПОМ
  9. ^ Отличный ПОМ
  10. ^ Пунзалан, Эдвин. «Плагин компилятора Apache Maven – Введение» .
  11. ^ Марбез, Бретт Портер, Джейсон ван Зил, Деннис Лундберг, Оливье Лами Бенсон, Маргулис Карл-Хайнц. «Maven – Доступные плагины» .
  12. ^ Эмис, Алекс; Цзоу ПХ; Ван И С (29 октября 2011 г.). «Автоматизация разработки и управления облачными виртуальными машинами» . IBM DeveloperWorks . ИБМ.
  13. ^ Портер, Бретт. «Maven — Введение в жизненный цикл сборки» .
  14. ^ «diet4j — поставьте Java JAR на диету и загружайте модули maven по мере необходимости» .
  15. ^ «Maven: Полный справочник» . Сонатип. Архивировано из оригинала 21 апреля 2013 года . Проверено 11 апреля 2013 г.
  16. ^ Поисковая система центрального репозитория
  17. ^ «maven.apache.org/eclipse-plugin.html» . Архивировано из оригинала 7 мая 2015 года.
  18. ^ «IntelliJ IDEA:: Возможности» . Архивировано из оригинала 24 мая 2015 г. Проверено 2 сентября 2009 г.
  19. ^ «MavenBestPractices — NetBeans Wiki» . Архивировано из оригинала 14 января 2018 г. Проверено 2 сентября 2009 г.

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: F4B53C54C17954CB19A54FFE7B261772__1712875380
URL1:https://en.wikipedia.org/wiki/Apache_Maven
Заголовок, (Title) документа по адресу, URL1:
Apache Maven - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)