Π Π°Π·Π½ΠΎΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ maven: ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ знакомство с Maven

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ знакомство с Maven

Maven β€” инструмСнт для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π‘ Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² основном Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, хотя Π΅ΡΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с C/C++, Ruby, Scala, PHP ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны особСнности ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния Maven, описан процСсс установки ΠΈ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π° структура Ρ„Π°ΠΉΠ»Π° описания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НазначСниС ΠΈ особСнности

Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π° Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ уровня Β«Hello, world!Β» ΠΌΠΎΠΆΠ½ΠΎ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Но Ρ‡Π΅ΠΌ слоТнСС Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ПО ΠΈ Ρ‡Π΅ΠΌ большС ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ рСсурсов, Ρ‚Π΅ΠΌ слоТнСС Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° для сборки. Maven Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для облСгчСния этой Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Одна ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… особСнностСй Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° β€” Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ описаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ аспСкту сборки β€” всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ настроСны ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ИзмСнСния Π½ΡƒΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ лишь Π² Ρ‚ΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ программист Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ стандартных настроСк.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ достоинство ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” Π³ΠΈΠ±ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями. Maven ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π² свой Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ зависимости.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°ΡŽΡ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΎΡ‚ ОБ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ зависят ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½ΠΎ Maven позволяСт Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ внимания Π½Π° этот аспСкт.

ΠŸΡ€ΠΈ нСобходимости систСму сборки ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ собствСнныС Π½ΡƒΠΆΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΡ‹. А Ссли Π½ΠΈΡ‡Π΅Π³ΠΎ подходящСго Π½Π΅ нашлось β€” ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свои.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Maven с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΎΠ΄Π½Π°ΠΊΠΎ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Π² Eclipse, IntelliJ IDEA, NetBeans ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ IDE.

Установка, настройка ΠΈ созданиС стандартного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Maven ΠΌΠΎΠΆΠ½ΠΎ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ страницы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π°ΠΌ ΠΆΠ΅ вас познакомят с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ трСбованиями — Π½Π° машинС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн JDK, Π° Ρ‚Π°ΠΊΠΆΠ΅ потрСбуСтся свободноС мСсто Π½Π° дискС, ΠΎΠΊΠΎΠ»ΠΎ 500 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚. Π­Ρ‚ΠΎ мСсто Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ для самой установки, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использовано для создания локального рСпозитория.

На страницС скачивания Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ², для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ. Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ, Ссли захочСтся всё ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² Maven.

Архив ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² любоС ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ мСсто. ПослС этого Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ bin ΠΈΠ· распакованного Π°Ρ€Ρ…ΠΈΠ²Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды PATH. Π’ Windows Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΉΡ‚ΠΈ Π² настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² систСмы (вызываСтся ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ клавиш Win+Pause ΠΈΠ»ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ ярлыку «Мой / Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Β» -> «Бвойства»), ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ Β«Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ систСмы». Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды». Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ», Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ β€” Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΒ» ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΏΡƒΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ вСсти ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ bin.

Π’ ОБ Π½Π° основС Unix ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ консольной ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ:

export PATH=/opt/apache-maven-3.6.0/bin:$PATH

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, всё Π»ΠΈ сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ консольной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ mvn -v. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:

Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T21:41:47+03:00)
Maven home: C:\apache-maven-3.6.0\bin\..
Java version: 10.0.1, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-10.0.1
Default locale: ru_RU, platform encoding: Cp1251
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΏΠ°ΠΏΠΊΡƒ для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π½Π΅Ρ‘. Π”Π°Π»Π΅Π΅ создаём Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для этого Π² консоли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Выглядит довольно слоТно, поэтому Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π΅Ρ‘ ΠΏΠΎ порядку.

archetype:generate это Ρ‚Π°ΠΊ называСмая Ρ†Π΅Π»ΡŒ. Она ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Maven, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠ°. Π”Π°Π»ΡŒΡˆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ -D ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ.

  • groupId=com.mycompany.appΒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ПО, Ρ‚Π°ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя своСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
  • artifactId=my-appΒ β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Maven ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌΠΈ. Π­Ρ‚ΠΎ прилоТСния, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΡ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. И ваша Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠΌ.
  • archetypeArtifactId=maven-archetype-quickstartΒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС шаблона для создания прилоТСния. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, это Ρ‚ΠΎΠΆΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚. Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ создаст простой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, сгСнСрируСт структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°Π±ΠΎΡ‚Π»ΠΈΠ²ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ Π² ΠΏΠ°ΠΏΠΊΡƒ исходников ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Β«Hello, world!Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ самому ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ Π² двухсотый Ρ€Π°Π·.
  • archetypeVersion=1.4Β ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π° Β«Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΒ».
  • interactiveMode=falseΒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ созданиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΡŒΒ archetype:generateΒ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈ Maven ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² процСссС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΌ это Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -B. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для mvn ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ mvn -h.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Maven сгСнСрируСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

my-app

|-- pom.xml

`-- src

Β  Β  |-- main

Β  Β  |Β  Β  Β `-- java

Β  Β  |Β  Β  Β  Β  Β `-- com

Β  Β  |Β  Β  Β  Β  Β  Β  Β `-- mycompany

Β  Β  |Β  Β  Β  Β  Β  Β  Β  Β  Β `-- app

Β  Β  |Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β `-- App.java

Β  Β  `-- test

Β  Β  Β  Β  `-- java

Β  Β  Β  Β  Β  Β  `-- com

Β  Β  Β  Β  Β  Β  Β  Β  `-- mycompany

Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  `-- app

Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  `-- AppTest.java

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΡƒΠ΄ΡƒΡ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅Β src/main/javaΒ (ΠΈ сСйчас Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ автоматичСски сгСнСрированный Ρ„Π°ΠΉΠ»), Π½ΠΎ Π½Π°ΠΌ сСйчас интСрСснСС Ρ„Π°ΠΉΠ» pom. xml Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΡ‚ самый Ρ„Π°ΠΉΠ» описания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Maven. Он написан Π½Π° языкС POM, входящим Π² сСмСйство XML:

<project 
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">

<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>

<name>my-app</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <pluginManagement>
        <plugins>
            <...>
        </plugins>
    </pluginManagement>
</build>
</project>

РазбСрёмся, Ρ‡Ρ‚ΠΎ всё это Π·Π½Π°Ρ‡ΠΈΡ‚.

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡Π°Ρ‚ Ρ‚Π΅Π³ΠΈ Π² pom.xml

Π’Π΅Π³Β project являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈ содСрТит всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π° информация, нСобходимая Maven для понимания Ρ„Π°ΠΉΠ»Π° pom.xml. Π’Π΅Π³ modelVersion ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ POM. Π­Ρ‚ΠΈ Π΄Π²Π° Ρ‚Π΅Π³Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ автоматичСски, ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ΄Ρ‘Ρ‚ информация, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚Π΅Π³ΠΈ groupId ΠΈ artifactId. Π•Ρ‘ ΠΌΡ‹ Π·Π°Π΄Π°Π²Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠ°. Π’Π΅Π³Β version Ρ‚ΠΎΠΆΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² эту Π³Ρ€ΡƒΠΏΠΏΡƒ. Он ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ гСнСрируСтся ΠΈ обновляСтся автоматичСски. ПослС Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии ΠΈΠ΄Ρ‘Ρ‚ суффикс -SNAPSHOT. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ находится Π² стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ процСссС выпуска ПО Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΡƒΠ±Π΅Ρ€Ρ‘Ρ‚ этот суффикс, Π° Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° продолТится β€” автоматичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ вСрсии. ВмСстС эти Ρ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚.

name содСрТит ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°, Π° urlΒ β€” ссылку Π½Π° сайт. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сайт Π½Π΅ Π·Π°Π΄Π°Π½ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ, pom.xml содСрТит Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎΠ± этом Π² Π²ΠΈΠ΄Π΅ коммСнтария. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Π² description. Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π±Π»ΠΎΠΊΒ properties. Π—Π΄Π΅ΡΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ особыС настройки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ вСрсия компилятора Java. Π‘Π΅Π· этого Π±Π»ΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ, полоТившись Π½Π° настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π‘Π»Π΅Π΄ΠΎΠΌ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ dependencies. Π’ Π½Ρ‘ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ зависимости. ΠšΠ°ΠΆΠ΄ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π΅Π³ΠΎΠΌΒ dependency ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: groupId,Β artifactId ΠΈΒ version. Maven сам ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΈΡ‚ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ зависимости. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Π³Π°Β scope ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ этапы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ использован Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚. БСйчас Π² pom.xml всСго ΠΎΠ΄Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ β€” Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ JUnit,Β Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования Π½Π° Java, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° стадии тСстирования.

ΠšΡΡ‚Π°Ρ‚ΠΈ, это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠ²ΠΎΠ΄ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Maven выполняСт сборку ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ„Π°Π·Π°ΠΌΠΈ. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΡ… названия Π½Π° английском, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС ΠΊΠΎΠΌΠ°Π½Π΄.

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° β€” validate. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ провСряСт, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½ Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ прСдоставлСна Π»ΠΈ вся нСобходимая для сборки информация.
  2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ β€” compile. Maven ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходники ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  3. ВСст β€” test. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° скомпилированных Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ нашСм случаС Π±ΡƒΠ΄Π΅Ρ‚ использована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JUnit.
  4. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” package. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ осущСствляСтся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JAR. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² project Ρ‚Π΅Π³ packaging.
  5. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ тСстированиС β€” integration-test. Maven ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΈ нСобходимости распаковываСт ΠΏΠ°ΠΊΠ΅Ρ‚ Π² срСду, Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты.
  6. ВСрификация β€” verify. АртСфакт провСряСтся Π½Π° соотвСтствиС критСриям качСства.
  7. Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ β€” install. АртСфакт ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС зависимости.
  8. Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ β€” deploy, β€” Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ стадия Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π­Ρ‚ΠΈ Ρ„Π°Π·Ρ‹ упорядочСны ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, систСма ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Ρ‚ ΠΎΡ†Π΅Π½ΠΊΡƒ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ тСстированиС, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого сборку. Помимо этого Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„Π°Π·Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прямой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Π­Ρ‚ΠΎ очистка β€” clean, ΡƒΠ΄Π°Π»ΡΡŽΡ‰Π°Ρ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ сборки, ΠΈ созданиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для сайта β€” site.

Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ рассмотрСниС pom.xml сСкциСй build. Она Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, Π² Π΄Π°Π½Π½ΠΎΠΌ pom.xml Π² Π½Π΅Ρ‘ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈΠ· Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· Π½ΠΈΡ…. Плагинов для Maven тысячи, освоившись с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π²Ρ‹ смоТСтС сами ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ сСбС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅.

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Ρ‡ΡƒΡ‚ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Π΅Π΅, Ρ‡Π΅ΠΌ вычислСниС Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°, приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС рСсурсы. Maven способСн автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ рСсурсов ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… Π² сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Для этого ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ src/main/resources. Π€Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ с сохранСниСм Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структуры ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Если ΠΆΠ΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈΒ resources, resource, directory Π² сСкции build:

<build>
    <resources>
        <resource>
            <directory>src/main/another_resources_directory</directory>
        </resource>
    </resources>
</build>

Π˜Ρ‚Π°ΠΊ, с Ρ„Π°ΠΉΠ»ΠΎΠΌ описания ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ„Π°Π·Ρ‹, mvn package. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ сборкС:

[INFO] ----------------------< com.mycompany.app:my-app >----------------------
[INFO] Building my-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ my-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\javaProjects\new_project\my-app\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ my-app ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\javaProjects\new_project\my-app\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ my-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\javaProjects\new_project\my-app\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ my-app ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\javaProjects\new_project\my-app\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ my-app ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.mycompany.app.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.217 s - in com.mycompany.app.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ my-app ---
[INFO] Building jar: C:\javaProjects\new_project\my-app\target\my-app-1. 0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  20.670 s
[INFO] Finished at: 2019-02-17T02:25:07+03:00
[INFO] ------------------------------------------------------------------------

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ target, Π° Π² Π½Π΅ΠΉ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»Β my-app-1.0-SNAPSHOT.jar.

ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App β€” Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Β«Hello World!Β».

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! Π’Ρ‹ собрали ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Maven. Для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния инструмСнта совСтуСм ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° эти ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹.

Maven β€” Π·Π°Ρ‡Π΅ΠΌ? / Π₯Π°Π±Ρ€

На просторах сСти Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈ Ρ…Π°Π±Ρ€Π° Π² частности ΠΌΠ½Π΅ досСлось Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΎΠΏΠΈΠΊ посвящённый Maven. И Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π±Ρ‹Π»ΠΎ обсуТдСниС, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ вопросы Π²ΠΈΠ΄Π°:

  • Π§Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π΅Π³ΠΎ использованиС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ‚ΠΈΠΏΠ° X?
  • Π§Π΅ΠΌ ΠΎΠ½ Π»ΡƒΡ‡ΡˆΠ΅ Ant/Make/sh?
  • А Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли я Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ antlr/JAX-WS/XDoclet?

Π― полагаю, Ρ‡Ρ‚ΠΎ всС эти вопросы происходят ΠΈΠ· нСзнания Ρ‡Ρ‚ΠΎ Π½Π° свСтС Π΅ΡΡ‚ΡŒ Π³ΡƒΠ³Π» нСдостаточного понимания Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ build management ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚. Π§Ρ‚ΠΎ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ растёт ΠΈΠ· нСдостаточного внимания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π°Π²Ρ‚ΠΎΡ€Ρ‹ статСй ΡƒΠ΄Π΅Π»ΡΡŽΡ‚ идСям стоящим Π·Π° xml-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π·Π°Π²ΠΎΡ€Π°ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.

МнС ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ каТСтся ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° говорят Maven ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ 3 достаточно слабо связанныС Π²Π΅Ρ‰ΠΈ:

  • POM. Project object model. МодСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” Π² Π½Π΅ΠΉ описано ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈ ΠΊΠ°ΠΊ устроСн Π΅Π³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ».
  • Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ². ΠœΠ΅ΡΡ‚Π° хранСния ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ вмСстС с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  • Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρƒ mvn ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΊ Π½Π΅ΠΉ. БобствСнно инструмСнт сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСстС.

POM

Π­Ρ‚ΠΎ общая модСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’ Π½Π΅ΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ характСристики ΠΊΠ°ΠΊ имя, вСрсия, Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΈΡ… контактная информация, VCS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ связанныС с Π½ΠΈΠΌ сСтСвыС рСсурсы, Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ»ΠΈ web-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ называСтся packaging, хотя влияСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚ΠΈΠΏ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°), связи с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ сборкС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈ описания способа ΠΈΡ… задСйствования. МнС каТутся особСнно Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° этой ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Бвязи с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модулями

POM допускаСт Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° связСй с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модулями: Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ наслСдованиС.

Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, эта связь Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π°Π· ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° нашСго модуля, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ-зависимостСй (абстрактно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ β€” Π°ΠΆ самому ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ). Π§Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ Ρ„Π°Π·Π΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° трСбуСтся опрСдСляСтся Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия зависимости. Maven ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ нСсколько ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… областСй дСйствия ΠΈ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ свои. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΡΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия: compile β€” ΠΎΠ½Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ сборки зависимости Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π½Π° этапС компиляции, выполнСния тСстов ΠΈ Π²ΠΎ врСмя выполнСния.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ связанный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ нашСго модуля. Для прохоТдСния нашим ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°Π·Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, входящий Π² Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ эту Ρ„Π°Π·Ρƒ. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ enterprise-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя web-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΏΠ°ΠΊΠ΅Ρ‚ с EJB ΠΈ ΠΎΠ±Ρ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ сборка Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сборки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

НаслСдованиС. Вакая связь ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ пСрСнос Π½Π° наслСдника части ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΊΠ°. ΠŸΡ€Π°Π²ΠΈΠ»Π° пСрСноса нСсколько Π·Π°ΠΏΡƒΡ‚Π°Π½Ρ‹, Π½ΠΎ Π² основном дСйствуСт ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΊΠ° становится ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ΠΌ для ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΌΠΎΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ: Π±Ρ‹Π» создан ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π²Π΅Ρ€ΡΠΈΡŽ JDK для компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» для ΠΏΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия исходников стандарту кодирования, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ (Π° ΠΊΠΎΠ΅-Π³Π΄Π΅ ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ использовался πŸ˜‰ ) ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ для всСх Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ сборкС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²

ОписаниС состоит ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ задСйствуСмого ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Π³ΠΎ настроСк(ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ), ΠΈ собствСнно выполняСмых ΠΈΠΌ Ρ†Π΅Π»Π΅ΠΉ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„Π°Π· ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°(ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΈΠ΄Π΅ΠΉ, стоящих Π·Π° этими Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ см. Π½ΠΈΠΆΠ΅).

Π­Ρ‚ΠΎΡ‚ элСмСнт нСсколько Ρ‡ΡƒΠΆΠ΄ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ΄Π΅ΠΈ POM β€” ΠΎΠ½ нСсёт Π½Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ описаниС модуля, Π° инструкции ΠΏΠΎ Π΅Π³ΠΎ сборкС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ инструмСнтом.

Π˜Ρ‚ΠΎΠ³ΠΈ
  1. POM β€” эта общая, унифицированая модСль описания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.
  2. Она ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½ΠΎ ΠΈ высокоуровнСвых связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.
  3. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½Π° нСсёт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± инструмСнтах, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° модуля.

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ²

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки, устроСнными Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ поиск Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π° (ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, вСрсии, Ρ‚ΠΈΠΏΡƒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°). Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π³Ρ€ΡƒΠΏΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π±Π΅Π· нСобходимости ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ исходных ΠΊΠΎΠ΄ΠΎΠ² ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сборку Π΄Π΅Ρ€Π΅Π²Π° зависимостСй с 0. Maven-совмСстимыС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΈ стали стандартом Π΄Π΅ Ρ„Π°ΠΊΡ‚ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

НуТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ pom-Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС модСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ хранится Π² рСпозитариях вмСстС со всСми (Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΡƒΡ€Π΅Π·Π°Π½Π½Ρ‹Π΅ ΠΈΡ… вСрсии, содСрТащиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ модуля ΠΈ зависимости, хранятся всСгда). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ являСтся Π² Ρ‚ΠΎΠΌ числС источником ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΊΠ°ΠΊ ΠΌΠΈΠ½Π½ΠΈΠΌΡƒΠΌ достаточной для дистрибуции) ΠΎ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π² Π½Ρ‘ΠΌ модулях.

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ бонусы ΠΎΠ½ΠΈ Π½Π°ΠΌ Π΄Π°ΡŽΡ‚:

  1. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ², ΠΈΡ… каталогизация.
  2. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ².

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ

НазваниС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ достаточно пафосноС, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ соотвСтствуСт высокой миссии ΠΈ слоТности ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Π΅Ρ‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ познакомится с Ρ‚Π΅ΠΎΡ€ΠΈΠ΅ΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° модуля Π² Maven. Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ называСтся вся ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΎΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки Π΄ΠΎ развёртывания. Π’ процСссС прохоТдСния ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹. Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½ Π½Π° Ρ„Π°Π·Ρ‹. КаТдая Ρ„Π°Π·Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ модуля Π² Π½ΠΎΠ²ΠΎΠ΅ состояниС Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΅Ρ‘ прохоТдСния ΠΈ появлСниС Π½ΠΎΠ²Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ². КаТдая прСдыдущая Ρ„Π°Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»ΠΈΠ²Π°Π΅Ρ‚ основу для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. Бписок Ρ„Π°Π· являСтся ΠΏΠΎ сути Ρ‡Π°ΡΡ‚ΡŒΡŽ POM, Π½ΠΎ глобальной, ΠΎΠ±Ρ‰Π΅ΠΉ для всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠŸΠΎΠ½Ρ‹ΠΉ список ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ бСссмыслСнно, Π½ΠΎ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько Ρ„Π°Π· (достаточно ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ…, Π½Π° ΠΌΠΎΠΉ взгляд πŸ™‚ ) Π² порядкС ΠΈΡ… слСдования: compile,… test,… deploy.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„Π°Π·Ρ‹ выполняСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ†Π΅Π»Π΅ΠΉ Π² зависимости ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ модуля. ЦСль являСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π°Π΄ исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΈ/ΠΈΠ»ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊ самой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅. Она ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π½Π° основании ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Бостоит ΠΈΠ· Π΄Π²ΡƒΡ… основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

  1. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΈΠ· совсСм малСнького ядра, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ описаны (Π·Π°Ρ…Π°Ρ€Π΄ΠΊΠΎΠΆΠ΅Π½Ρ‹, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ простой Π½Π°Ρ€ΠΎΠ΄) Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ устройства ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ†Π΅Π»ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ„Π°Π· стандартных Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², рабочая срСда для ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (интСрфСйсы доступа ΠΊ модСлям, рСпозитариям, Π€Π‘, настройкам ΠΈ Ρ‚.ΠΏ.).
  2. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². Они собствСнно содСрТат ΠΊΠΎΠ΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π»ΠΈ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ вся внСшняя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ mvn рСализуСтся ΠΈΠΌΠΈ. ИмСнно ΠΎΠ½ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚, ΠΏΠ°ΠΊΡƒΡŽΡ‚ ΠΈ Ρ‚.Π΄. ΠΈ Ρ‚.ΠΏ.

ΠžΠ±Ρ‰Π΅Π½ΠΈΠ΅ с этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ построСно ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ просто: Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π΄ΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½Π΄ΠΈΡ†ΠΈΠΈ Ρ„Π°Π·Ρ‹ Π½ΡƒΠΆΠ½ΠΎ довСсти ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΎΠ½Π° это Π΄Π΅Π»Π°Π΅Ρ‚. Вся ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ выполнСния Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Π΄ΠΎΡΡ‚ΠΈΠΆΠ΅Π½ΠΈΡŽ Ρ†Π΅Π»ΠΈ остаётся Π½Π° совСсти Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (Π½Ρƒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ остаётся Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ). НапримСр Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ compile ΠΈ Π½Π°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π»Π΅Π·Π»ΠΎ ΠΈΠ· VCS Π½ΠΎ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ wsimport’ΠΎΠΌ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°. НапримСр Π΅ΡΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Eclipse-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π·Π°Π΄Π°Ρ‡Π° Β«ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Β» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ привязываСтся Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°Π·Π΅, Π° вызываСтся заинтСрСсованными Π»ΠΈΡ†Π°ΠΌΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΡ€Π°ΠΉΠ½Π΅ интСрСсной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ mvn являСтся созданиС Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° основС Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠ°. АрхСтип β€” ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ шаблон ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ Π½Π° Π΅Π³ΠΎ структурС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ…. НапримСр Π΅ΡΡ‚ΡŒ стандартныС Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΡ‹ java-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, web-модуля, ΠΈ нСстандартныС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ grails ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠ° ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. АрхСтип β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ шаблон Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ структуры ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… частСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, послС создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΅Π³ΠΎ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠ΅ Π½Π΅ остаётся. Π’ΠΈΠΏ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° протяТСнии всСго ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

Π§Ρ‚ΠΎ получаСтся Π² суммС

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ столпа Maven. Π§Ρ‚ΠΎ-ΠΆΠ΅ ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ Π½Π°ΠΌ вмСстС?

  • ΠšΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. НС всё Ρ‚ΡƒΡ‚ Π³Π»Π°Π΄ΠΊΠΎ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ IDE ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· POM, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСрвСров автокомпиляции (continuous integration, ΠΊΠ°ΠΊ говорят Π°Π΄Π΅ΠΏΡ‚Ρ‹ XP) Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • Единая систСма ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠžΡ‡Π΅Π½ΡŒ просто ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ. Π£ нас Π½Π΅Ρ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° багфикс-Π²Π΅Ρ‚ΠΊΠ° нашСго-супСр-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, собранная Π² 23 часа Π² ΠΏΡ€ΠΎΡˆΠ»ΡƒΡŽ субботу.
  • Один инструмСнт. Π₯отя это, прямо скаТСм, Π½Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ„ΠΈΡ‡Π° Maven. НС ΡƒΠ΄Π΅Ρ€ΠΆΡƒΡΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽ ΠΏΡ€ΠΎΠΏΠΈΡΠ½ΡƒΡŽ истину: ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ стандартными ΠΈ пСрСносимыми срСдствами. Π‘Π±ΠΎΡ€ΠΊΠ° любимой IDE ΠŸΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” ΠΏΡƒΡ‚ΡŒ Π² Π°Π΄.
  • АвтоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями. БвязываниС исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ сборками Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ нСвСсёлая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Особо Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ трудности с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠ΅Π² исходников (сколько ΠΌΠ°Π³Π½ΠΈΡ‚Π½Ρ‹Ρ… Π»Π΅Π½Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ бэкап вашСго svn?)) ). Π˜Π·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΡ вСлосипСда Π² Π²ΠΈΠ΄Π΅ своих Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠ΅Π² ΠΈΠ»ΠΈ скриптов ΠΏΠΎΠ΄Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… исходнки зависимостСй Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² эпоху, ΠΊΠΎΠ³Π΄Π° космичСскиС ΠΊΠΎΡ€Π°Π±Π»ΠΈ бороздят просторы всСлСнной.
  • ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, связанных с устройством ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Благодаря наслСдованию ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², настройки, связанныС с инфраструктурой ΠΈ инструмСнтариСм принятыми Π² нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ИспользованиС Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠΎΠ² позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этап создания Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΡΡŠΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки Π² использовании Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
  • Π“ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ срСдство для управлСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ простота ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования. НастраиваСм инфраструктуру ΠΏΠΎΠ΄ΠΎΠ±Π°ΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΠ»Π΄ осСдаСт Π² Π½ΡƒΠΆΠ½ΠΎΠΌ мСстС ΠΈ доступСн для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования. НуТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΠΊ вСрсий/Π²Π΅Ρ‚ΠΎΠΊ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°? ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ зависимости Π² POM.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎ-Ρ‚ΠΎ я мСстами отклонился ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ вопроса ΠΈ Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ занялся вопросом Β«ΠΊΠ°ΠΊΒ», Π½Ρƒ Π΄Π° ладно…

Из всСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простой, Π½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ вСсьма Ρ€Π΅Π΄ΠΊΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄. Maven β€” Π½Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для сборки Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Maven β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ большого спСктра Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ связан с языком ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ½ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ обязан Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ. Π’Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ описания ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ написания ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ инструмСнт. Π”Π°, принятая Π² Π½Ρ‘ΠΌ ΠΏΠΎ модСль ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” сборка Java-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π½ΠΎ это лишь умолчания…

НадСюсь, Ρ‡Ρ‚ΠΎ послС прочтСния Ρ‚ΠΎΠΏΠΈΠΊΠ° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопросы, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ πŸ˜‰

P.S. Π•Ρ‰Ρ‘ я с интСрСсом ΡƒΠ·Π½Π°ΡŽ ΠΎ вашСм ΠΎΠΏΡ‹Ρ‚Π΅ нСстандартного примСнСния Maven. Π•ΡΡ‚ΡŒ идСя Π² Π±ΡƒΠ΄ΡƒΡŽΡ‰Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пост с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ интСрСсных ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… use case’ΠΎΠ² для Π½Π΅Π³ΠΎ.

ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° вопросы Π½Π° собСсСдованиС Maven (Ρ‡Π°ΡΡ‚ΡŒ 1).

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, автоматизация сборки?

Π‘Π±ΠΎΡ€ΠΊΠ° (Π°Π½Π³Π». assembly) — Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», содСрТащий исполняСмый ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ для использования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚.

Автоматизация сборки — этап написания скриптов ΠΈΠ»ΠΈ автоматизация ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ПО, примСняСмому Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π² ΠΈΡ… повсСднСвной Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ:

  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ исходного ΠΊΠΎΠ΄Π° Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄
  • Π‘Π±ΠΎΡ€ΠΊΠ° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
  • Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСстов
  • Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° производствСнной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅
  • НаписаниС ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ описаниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½ΠΎΠ²ΠΎΠΉ вСрсии

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven? Как ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

Apache Maven — это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², компиляции, создания jar, создания дистрибутива ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Если ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ большиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° для сборки Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, поэтому Π΅Ρ‘ ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π² bat/sh скрипт. Но Ρ‚Π°ΠΊΠΈΠ΅ скрипты зависят ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этой зависимостии ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ написаниС скрипта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ инструмСнты для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Maven, обСспСчиваСт Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ, Π° Π½Π΅ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° pom.xml содСрТится Π΅Π³ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ описаниС, Π° Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ВсС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Maven выполняСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹.

  • КакиС прСимущСства Maven?

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства Maven:

  • ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ OS. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° происходит Π² любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. Π€Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅.
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями. Π Π΅Π΄ΠΊΠΎ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π±Π΅Π· использования сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ(зависимостСй). Π­Ρ‚ΠΈ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Ρ‚ΠΎΠΆΠ΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий. Maven позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌΠΈ слоТными зависимостями. Π§Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ вСрсий ΠΈ Π² случаС нСобходимости Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° сборка ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’Π°ΠΊΠΎΠ΅ часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для автоматичСской сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° сСрвСрС (Continuous Integration).
  • Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ интСграция со срСдами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° java Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ maven. ΠŸΡ€ΠΈ этом Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ — ΠΎΠ½ сразу Π³ΠΎΡ‚ΠΎΠ² ΠΊ дальнСйшСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.Β 
  • Как слСдствиС — Ссли с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎ maven ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ хранСния настроСк. НастроСчный Ρ„Π°ΠΉΠ» срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ для сборки ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ — мСньшС дублирования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ соотвСтствСнно ошибок.
  • Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ описаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  • КакиС нСдостатки Maven?

НСдостатки Maven:

  • ΠΠ΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ. Если Π² Ant указываСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ — ΠΈ удаляСтся Ρ„Π°ΠΉΠ», Ρ‚ΠΎ Π² случаС Maven Π½Π°Π΄ΠΎ всСм сСрдцСм Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρƒ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ.
  • ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, особСнно ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌ. Π”Π° ΠΈ просто Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ придётся ΠΌΠ½ΠΎΠ³ΠΎ. ΠŸΠΎΡ€ΠΎΠ³ вхоТдСния, Ссли потрСбуСтся ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ самоС слоТноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡƒΠ΄Π° Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρƒ Ant.
  • Если Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ — это Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСпросто, ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ. И Π½Π΅ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π½Π° всС 100% ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ошибок.
  • НуТСн доступ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (ΠΈΠ»ΠΈ придётся Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ собствСнный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΎ)
  • Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ трудности, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΈΠΉ.

  • Какими аспСктами управляСт Maven?

Π’ΠΎΡ‚ основныС аспСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Maven:

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ (Build)
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Documentation)
  • ΠžΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ (Reporting)
  • Зависимости (Dependencies)
  • Π Π΅Π»ΠΈΠ·Ρ‹ (Releases)
  • SCM
  • Бписок рассылки (Mailing list)
  • Π”ΠΈΡΡ‚Ρ€ΠΈΠ±ΡŒΡŽΡ†ΠΈΡ (Distribution)

  • Как ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Maven Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅?

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

mvn —version

  • Для Ρ‡Π΅Π³ΠΎ создан Maven?

Основной Ρ†Π΅Π»ΡŒΡŽ Maven являСтся прСдоставлСниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ:

  • ΠŸΠΎΠ½ΡΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈ Π±Ρ‹Π»Π° Π±Ρ‹ проста Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΈ.
  • ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с этой модСлью.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ соТСрТаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Maven указываСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ xml-Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ назывСтся Project Object Model (POM), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ всСй систСмы.

  • Какая структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² Maven?

Π’ Maven стандартная структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², благодаря Π΅ΠΉ ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° находится pom.xml ΠΈ нСсколько тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ². Всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ хозяйство Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΎ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…. Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… — src ΠΈ target. Однако, порядок сохраняСтся ΠΈ Π²Π³Π»ΡƒΠ±ΡŒ:

  • Π“Π΄Π΅ Π²Ρ‹ хранятся Ρ„Π°ΠΉΠ»Ρ‹ классов ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Maven?

Π€Π°ΠΉΠ»Ρ‹ классов хранятся Π²: ${basedir}/target/classes/.

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ pom.xml?

pom.xml — это XML-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ дСталях ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ Β ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Maven. Он всСгда находится Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Ρ‚Π°ΠΊΠΆΠ΅ содСрТит Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. Π’ΠΎ врСмя выполнСния Π·Π°Π΄Π°Ρ‡, Maven ΠΈΡ‰Π΅Ρ‚ Ρ„Π°ΠΉΠ» pom.xml Π² Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, послС Ρ‡Π΅Π³ΠΎ выполняСт Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт <project>, схСма, которая ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, ΠΈ вСрсия pom.xml. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° project содСрТится основная ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

  • ΠšΠ°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ содСрТит pom.xml?

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ содСрТит pom.xml ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

  • Зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (project dependencies)
  • ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ (plugins)
  • Π—Π°Π΄Π°Ρ‡ΠΈ/Ρ†Π΅Π»ΠΈ (goals)
  • ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ создания (build profiles)
  • ВСрсия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (project version)
  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (developers)
  • Бписок рассылки (mailing list)

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ супСр POM?

ВсС POM — Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ pom.xml. Π­Ρ‚ΠΎΡ‚ POM-Ρ„Π°ΠΉΠ» называСтся Super POM ΠΈ содСрТит значСния, унаслСдованныС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

  • КакиС элСмСнты Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для минимального POM?

Π’Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ элСмСнты для минимального POM Π΅Ρ‚ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΈΠΉ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚, modelVersion, GroupID, artifactID Β ΠΈ вСрсия. ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ POM Ρ„Π°ΠΉΠ»:

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ зависимости Π² Maven?

Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (dependency) — это Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСпосрСдствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ для компиляции ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ тСстирования.

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Π² Maven?

АртСфакт (artefact) — это, ΠΏΠΎ сути, любая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, хранящаяся Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (мСстС хранСния). Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ какая-Ρ‚ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠΌ являСтся JAR-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Maven. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ содСрТит group ID, artifact ID ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ.

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ Π² Maven?

Плагин (plugin) — это зависимости Maven’Π°, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Π΄Π°Ρ‡Π° Π² Maven?

Π—Π°Π΄Π°Ρ‡Π° (goal) — это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π°, которая относится ΠΊ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ. Она ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊ нСскольким Ρ„Π°Π·Π°ΠΌ, Ρ‚Π°ΠΊ ΠΈ Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ. Π—Π°Π΄Π°Ρ‡Π°, которая Π½Π΅ привязана Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°Π·Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π²Π½Π΅ Ρ„Π°Π· сборки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прямого Π²Ρ‹Π·ΠΎΠ²Π°.

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ Π² Maven?

АрхСтип (archetype) — это нСкая стандартная ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° (Π²Π΅Π±, swing-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅). Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Maven Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ строятся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π² соотвСтствии с Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠΎΠΌ создаСт структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² Maven?

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (repository) — глобальноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ всСх Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, доступных для Maven, это мСсто Π³Π΄Π΅ хранятся Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹: jar Ρ„Π°ΠΉΠ»Ρ‹, pom-Ρ„Π°ΠΉΠ»Ρ‹, javadoc, исходники, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹.

  • КакиС Ρ‚ΠΈΠΏΡ‹ рСпозитория ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Maven?

Π’ Maven ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΡ‹ рСпозитория:

  • Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ (local) Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ — это дирСктория, которая хранится Π½Π° нашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Она создаётся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выполнСния любой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Maven. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° располоТСна Π² <home дирСктория>/.m2/repository — ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ (central) Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ — это Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСтся сообщСством Maven. Он содСрТит ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ΠšΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располоТСн Π² http://repo1.maven.org/maven2/ ΠΈ доступСн Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. Если Maven Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ зависимости Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‚ΠΎ автоматичСски начинаСтся поиск Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ
  • Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ (remote) Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ — ΠΈΠ½ΠΎΠ³Π΄Π°, Maven Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’ этом случаС, процСсс сборки прСрываСтся ΠΈ Π² консоль выводится сообщСниС ΠΎΠ± ошибкС. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π² Maven прСдусмотрСн ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π£Π΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся самим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. Π’Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости.

  • Какая ΠΊΠΎΠΌΠ°Π½Π΄Π° установляСт JAR-Ρ„Π°ΠΉΠ» Π² локальноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅?

mvn install

  • Какой порядок поиска зависимостСй Maven?

Когда ΠΌΡ‹ выполняСм собрку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Maven, автоматичСски начинаСтся поиск Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… зависимостСй Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС:

  1. Поиск зависимостСй Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Если зависимости Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹, происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡˆΠ°Π³Ρƒ 2.
  2. Поиск зависимостСй Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Если ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½, Ρ‚ΠΎ происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡˆΠ°Π³Ρƒ 4.
  3. Если ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½, Ρ‚ΠΎ процСсс сборки прСкращаСтся ΠΈ выводится сообщСниС ΠΎΠ± ошибкС.
  4. Поиск зависимостСй Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ссли ΠΎΠ½ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹, Ρ‚ΠΎ происходит ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ссли Π½Π΅Ρ‚ — выводится сообщСниС ΠΎΠ± ошибкС.

  • КакиС Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° настройки Π΅ΡΡ‚ΡŒ Π² Maven, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ Π³Π΄Π΅ располоТСны?

Π’ Maven, Ρ„Π°ΠΉΠ»Ρ‹ настройки Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ settings. xml, ΠΈ ΠΎΠ½ΠΈ располоТСны Π² Π΄Π²ΠΎΡ… мСстах:

  • ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Π³Π΄Π΅ установлСн Maven: $M2_Home/conf/settings.xml
  • Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ дирСктория ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: ${user.home}/.m2/settings.xml

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сборки Π² Maven?

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сборки(Lifecycle) — это Ρ‡Ρ‘Ρ‚ΠΊΠΎ опрСдлённая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„Π°Π· Π²ΠΎ врСмя выполнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΡ‹Π½ Π±Ρ‹Ρ‚ΡŒ достигнуты ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ. Π—Π΄Π΅ΡΡŒ Ρ„Π°Π·Π° прСдставляСт собой ΡΡ‚Π°Π΄ΠΈΡŽ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

  • НазовитС основныС Ρ„Π°Π·Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки Maven?

Когда Maven Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„Π°Π· сборки, ΠΈ выполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„Π°Π·.

Π’ Maven Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 3 стандартных ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°:

  • ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° (clean) — ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹, созданныС Π΄ΠΎ сборки.
  • Π‘Π±ΠΎΡ€ΠΊΠ° (default or build) — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания прилоТСния.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сайта ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (site) — Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ сайта для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  • Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° mvn site?

mvn site — создаСт Π²Π΅Π±-сайт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  • Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° mvn clean?

mvn clean — эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΡ‚ созданных Π² процСссС сборки Ρ„Π°ΠΉΠ»ΠΎΠ².

Maven (Ρ‡Π°ΡΡ‚ΡŒ 2).

Руководство ΠΏΠΎ Maven. ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹. – PROSELYTE

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π² Ρ†Π΅Π»ΠΎΠΌ, Ρ‚ΠΎ Maven – это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. Π’ этом Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ каТдая Π·Π°Π΄Π°Ρ‡Π°, ΠΏΠΎ сути своСй, выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ Maven ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ‚ΡΡ для:

  • создания jar – Ρ„Π°ΠΉΠ»Π°
  • создания war – Ρ„Π°ΠΉΠ»Π°
  • компиляции ΠΊΠΎΠ΄Π° Ρ„Π°ΠΉΠ»ΠΎΠ²
  • ΡŽΠ½ΠΈΡ‚-тСстирования ΠΊΠΎΠ΄Π°
  • созданиС ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
  • созданиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, ΠΏΠ»Π°Π³ΠΈΠ½ обСспСчиваСт Π½Π°Π±ΠΎΡ€ Ρ†Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ синтаксиса:


mvn [имя-ΠΏΠ»Π°Π³ΠΈΠ½Π°]:[имя-Ρ†Π΅Π»ΠΈ]


НапримСр, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:


mvn compiler:compile


Π’ΠΈΠΏΡ‹ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π² Maven:

  • ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ сборки
    Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² процСссС сборки ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° <build></build> Ρ„Π°ΠΉΠ»Π° pom. xml
  • ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ²
    Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² процСсса гСнСрирования сайта ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° <reporting></reporting> Ρ„Π°ΠΉΠ»Π° pom.xml.

Π’ΠΎΡ‚ список, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²:

  • clean
    ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΡŒ послС сборки. УдаляСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ target.
  • compiler
    ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходныС Java Ρ„Π°ΠΉΠ»Ρ‹.
  • surefire
    ЗапускаСт тСсты JUnit. Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΎ тСстировании.
  • jar
    Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ JAR Ρ„Π°ΠΉΠ» Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • war
    Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ WAR Ρ„Π°ΠΉΠ» Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • javadoc
    Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Javadoc ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • antrun
    ЗапускаСт Π½Π°Π±ΠΎΡ€ Π·Π°Π΄Π°Ρ‡ ant ΠΈΠ· любой ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ„Π°Π·Ρ‹.

Для понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>ProselyteTutorials</groupId>
    <artifactId>MavenTutorial</artifactId>
    <version>1.0-SNAPSHOT</version>
    <profiles>
        <profile>
            <id>test</id>
            <activation>
                <file>
                    <missing>target/generated-sources/some/dir/net/proselyte/maven</missing>
                </file>
            </activation>
        </profile>
    </profiles>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3. 8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <id>id.clean</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <echo>compile phase</echo>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>


ПослС этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:


mvn compile


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:


[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building MavenTutorial 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ MavenTutorial ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i. e. build is platform dependent!
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ MavenTutorial ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-antrun-plugin:1.1:run (id.clean) @ MavenTutorial ---
[INFO] Executing tasks
     [echo] compile phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.620s
[INFO] Finished at: Wed Apr 27 16:21:41 EEST 2016
[INFO] Final Memory: 6M/150M
[INFO] ------------------------------------------------------------------------


ΠŸΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅, дСмонстрируСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ:

  • ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ pom.xml Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° <plugins></plugins>
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ†Π΅Π»Π΅ΠΉ.
  • ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„Π°Π·Ρƒ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π°. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ использовали Ρ„Π°Π·Ρƒ compile.

На этом ΠΌΡ‹ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим созданиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Maven.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Maven — простой инструмСнт для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки β€” itGap

ΠœΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с быстрого вступлСния, Π° Π·Π°Ρ‚Π΅ΠΌ пСрСчислим прСимущСства Π΅Π³ΠΎ использования. ПослС всСго этого ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ процСсс Π΅Π³ΠΎ установки, Π° Π·Π°Ρ‚Π΅ΠΌ нСсколько тСхничСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ. Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven?

Apache Maven — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для управлСния ΠΈ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Он основан Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (POM). Maven ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сборкой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, составлСниСм ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ части ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Apache Maven — это инструмСнт для сборки, ΠΈ ΠΎΠ½ выполняСт эту Π·Π°Π΄Π°Ρ‡Ρƒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ant, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΆΠ΅ являСтся Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΡΡ инструмСнтом для сборки. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ инструмСнт управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (POM).

Maven позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ создания исходного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠ°ΠΏΠΎΠΊ, выполнСния сортировки ΠΈ тСстирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ развСртывания ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сборки. Он сокращаСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство шагов Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ процСссС ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ процСсс сборки простым.

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Maven?

Подводя ΠΈΡ‚ΠΎΠ³, Maven ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈ стандартизируСт процСсс сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он Π»Π΅Π³ΠΊΠΎ выполняСт Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, распространСниС, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Maven ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования, Π° Ρ‚Π°ΠΊΠΆΠ΅ выполняСт Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π΄Π°Ρ‡, связанных со сборкой.

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… этапах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ jar-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, созданиС ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСстовых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Junits, созданиС Ρ„Π°ΠΉΠ»ΠΎΠ² Jar, War, Ear для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ аспСктом Maven являСтся Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ для управлСния Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ JAR.

Maven ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания ΠΈ управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, написанными Π½Π° Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ C #, ruby ​​и Π΄Ρ€ΡƒΠ³ΠΈΡ….

ДавайтС посмотрим на ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства Maven.

  • Π•Π³ΠΎ конфигурация ΠΎΡ‡Π΅Π½ΡŒ минимальная
  • Π˜ΠΌΠ΅Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ зависимости
  • Автоматизация всСго процСсса
  • Он ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ JUnit ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, тСстированиС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
  • Бтандартная ΠΈ унифицированная инфраструктура срСди ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²

Настройка срСды Maven

Установка Maven Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, установлСна ​​ли Π² систСмС Java. Ссли Π½Π΅Ρ‚ Ρ‚ΠΎ установитС Π΅Π³ΠΎ
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, установлСна ​​ли пСрСмСнная срСды Java. Если Π½Π΅Ρ‚, Ρ‚ΠΎ установитС Π΅Π³ΠΎ
  • Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅Β Maven
  • РаспакуйтС Π°Ρ€Ρ…ΠΈΠ² maven Π² ΠΎΠ΄Π½ΠΎΠΉ мСстС систСмы
  • Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ binΒ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° apache-maven-3.6.3 Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды PATH ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.
  • ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Β ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ mvn -v, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ установку.

Π’ΠΎΡ‚ ΠΈ всС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ инструкции ΠΏΠΎ установкС, слСдуйтС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅ руководству Π½Π° YouTube ΠΏΠΎ настройкС срСды Maven, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эта ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° простой для чтСния ΠΈ скучной.

Π”Π°Π½Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ тСхничСскиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, связанныС с MAVEN. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹:

Maven Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Maven Local Repository — это Π½Π°Π±ΠΎΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Maven Ρ…Ρ€Π°Π½ΠΈΡ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ jar ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ зависимости. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ имя ΠΏΠ°ΠΏΠΊΠΈ установлСно Π½Π° .m2, Π° ΠΏΡƒΡ‚ΡŒ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Β Libraries\Documents\.m2.

Maven Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Maven являСтся мСстополоТСниСм ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Maven всСх Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ зависимостСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для использования. Для любой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Maven сначала просматриваСт ΠΏΠ°ΠΏΠΊΡƒ .m2 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория, ΠΈ Ссли ΠΎΠ½ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΡƒΠΆΠ½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΎΠ½ ΠΈΡ‰Π΅Ρ‚ Π² Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Maven POM

POM — это XML-Ρ„Π°ΠΉΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, содСрТащий ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ свСдСния ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Maven для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он содСрТит значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². НСкоторыС ΠΈΠ· структур, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² POM, — это зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ сборки.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² создании Ρ„Π°ΠΉΠ»Π° pom.xml:

  • project — ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ являСтся ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ элСмСнтом Ρ„Π°ΠΉΠ»Π° pom.xml.
  • modelVersion — ΠžΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠΎΠ΄Π΅Π»ΠΈ POM, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.
  • groupId — ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½, ΠΈ Ρ‡Π°Ρ‰Π΅ всСго Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π³Ρ€ΡƒΠΏΠΏΡ‹, связанный с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Java.
  • artifactId — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдоставлСния названия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ собираСтС.
  • Version — этот элСмСнт состоит ΠΈΠ· Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Если ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсиях, Ρ‚ΠΎΠ³Π΄Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (Dependency)

Зависимости (Dependency) — это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. Подобно jar-Ρ„Π°ΠΉΠ»Π°ΠΌ Log4j, jar-Ρ„Π°ΠΉΠ»Π°ΠΌ Apache Poi, Selenium Jars — это нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Зависимости Π² Maven pom.xml ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ:

<dependencies>

      <dependency>
         <groupId>com.companyname.groupname</groupId>
         <artifactId>App-Core-lib</artifactId>
         <version>1.0</version>
      </dependency>

</dependencies>

Плагин Surefire

Плагин Surefire Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π²ΠΎ врСмя Ρ„Π°Π·Ρ‹ тСстирования ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов прилоТСния. Он создаСт ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкстовый Ρ„Π°ΠΉΠ», XML-Ρ„Π°ΠΉΠ»Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² HTML-Ρ„Π°ΠΉΠ»Π°Ρ…. Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ инфраструктуру Junits ΠΈΠ»ΠΈ TestNG для создания ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², этот ΠΏΠ»Π°Π³ΠΈΠ½ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для использования, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Maven Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ тСсты.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Maven

Когда Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Java, ΠΈ Ρƒ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠ½ΠΎΠ³ΠΎ зависимостСй, сборок, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° со всСми этими Π²Π΅Ρ‰Π°ΠΌΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ являСтся Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ слоТной ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, использованиС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эти Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

А Maven — это Ρ‚Π°ΠΊΠΎΠΉ инструмСнт управлСния сборкой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостСй, использованиС ΠΏΡƒΡ‚ΠΈ ΠΊ классам для проСцирования, автоматичСскоС созданиС Ρ„Π°ΠΉΠ»ΠΎΠ² war ΠΈ jar ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ.

Π’Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ:

  1. Книги ΠΏΠΎ языку программирования Java
  2. Π’ΠΎΠΏ-5 послСдних ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π½Π° Java
  3. Π’ΠΎΠΏ-9 Java EE Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² для создания ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
  4. Как бСсплатно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ SSL-сСртификат для сайта?

Руководство ΠΏΠΎ Maven. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ тСстированиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. – PROSELYTE

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрСли созданиС Java прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Maven. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Наш pom.xml Ρ„Π°ΠΉΠ» выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.proselyte.mavensimple</groupId>
  <artifactId>javaStudent</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>javaStudent</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>


ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Maven автоматичСски Π΄ΠΎΠ±Π°Π²ΠΈΠ» зависимости Junit Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΏΠ°ΠΏΠΊΡƒ javaStudent ΠΈ напишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:


mvn clean package


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:


[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building javaStudent 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ javaStudent ---
[INFO] Deleting /home/proselyte/Programming/Projects/Proselyte/MavenSimpleProject/javaStudent/target
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ javaStudent ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/proselyte/Programming/Projects/Proselyte/MavenSimpleProject/javaStudent/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ javaStudent ---
[INFO] Compiling 1 source file to /home/proselyte/Programming/Projects/Proselyte/MavenSimpleProject/javaStudent/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.3:testResources (default-testResources) @ javaStudent ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/proselyte/Programming/Projects/Proselyte/MavenSimpleProject/javaStudent/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.0.2:testCompile (default-testCompile) @ javaStudent ---
[INFO] Compiling 1 source file to /home/proselyte/Programming/Projects/Proselyte/MavenSimpleProject/javaStudent/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ javaStudent ---
[INFO] Surefire report directory: /home/proselyte/Programming/Projects/Proselyte/MavenSimpleProject/javaStudent/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running net.proselyte.mavensimple.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.2:jar (default-jar) @ javaStudent ---
[INFO] Building jar: /home/proselyte/Programming/Projects/Proselyte/MavenSimpleProject/javaStudent/target/javaStudent-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.071s
[INFO] Finished at: Wed Apr 27 17:04:01 EEST 2016
[INFO] Final Memory: 19M/190M
[INFO] ------------------------------------------------------------------------


Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:


 cd target/classes


А Π·Π°Ρ‚Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ:


java net.proselyte.mavensimple.App


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:


/*Some system messages*/
Hello World!


На этом ΠΌΡ‹ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°.
Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим внСшниС зависимости.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven Ρ†Π΅Π»Π΅ΠΉ ΠΈ этапов ΠΈ Π² Ρ‡Π΅ΠΌ ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅?

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» — это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… Ρ„Π°Π· .

Π€Π°Π·Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„Π°Π·Ρ‹ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСх ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ„Π°Π·.

Плагин прСдставляСт собой Π½Π°Π±ΠΎΡ€ Ρ†Π΅Π»Π΅ΠΉ , Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… MOJO (M aven O ld J ava O bject).

Аналогия: ΠΏΠ»Π°Π³ΠΈΠ½-это класс, Π° Ρ†Π΅Π»ΠΈ-это ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса.

Maven основан Π½Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки. Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки Π΅ΡΡ‚ΡŒ Ρ„Π°Π·Ρ‹ сборки, ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„Π°Π·Ρ‹ сборки Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΈ сборки .

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ Ρ„Π°Π·Ρƒ сборки, Π»ΠΈΠ±ΠΎ Ρ†Π΅Π»ΡŒ сборки. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ„Π°Π·Ρ‹ сборки ΠΌΡ‹ выполняСм всС Ρ†Π΅Π»ΠΈ сборки Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой Ρ„Π°Π·Ρ‹ сборки. Π¦Π΅Π»ΠΈ сборки Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким Ρ„Π°Π·Π°ΠΌ сборки. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΡŒ сборки Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

БущСствуСт Ρ‚Ρ€ΠΈ основных встроСнных ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° сборки :

  1. ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
  2. чистый
  3. сайт

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сборки состоит ΠΈΠ· Ρ„Π°Π·

НапримСр, ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» default состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов сборки :

β—Ύvalidate - validate the project is correct and all necessary information is available
β—Ύcompile - compile the source code of the project
β—Ύtest - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
β—Ύpackage - take the compiled code and package it in its distributable format, such as a JAR.
β—Ύintegration-test - process and deploy the package if necessary into an environment where integration tests can be run
β—Ύverify - run any checks to verify the package is valid and meets quality criteria
β—Ύinstall - install the package into the local repository, for use as a dependency in other projects locally
β—Ύdeploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°Π·Ρ‹, Π½Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

mvn <phase> { Ex: mvn install }

Для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„Π°Π·Ρ‹, всС Ρ„Π°Π·Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎ Ρ„Π°Π·Ρ‹ «ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°». mvn ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΡŒ ΠΈΠ»ΠΈ Ρ„Π°Π·Ρƒ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ нСсколько Ρ†Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ нСсколько Ρ„Π°Π·) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

mvn clean install plugin:goal  

Однако, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прСфикс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ссылки Π½Π° ваш ΠΏΠ»Π°Π³ΠΈΠ½, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ прСфикс нСпосрСдствСнно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° maven-plugin-plugin Π² POM вашСго ΠΏΠ»Π°Π³ΠΈΠ½Π°.

Π€Π°Π·Π° сборки состоит ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½Π°

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Maven находится Π² ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ…. Плагин прСдоставляСт Π½Π°Π±ΠΎΡ€ Ρ†Π΅Π»Π΅ΠΉ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса:

 mvn [plugin-name]:[goal-name]

НапримСр, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Java ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилирован с Ρ†Π΅Π»ΡŒΡŽ компиляции ΠΏΠ»Π°Π³ΠΈΠ½Π° компилятора, запустив mvn compiler:compile .

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сборки — это список ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для привСдСния Π² порядок выполнСния Ρ†Π΅Π»ΠΈ.

Π¦Π΅Π»ΠΈ, прСдоставляСмыС ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ„Π°Π·Π°ΠΌΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. НапримСр, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ†Π΅Π»ΡŒ compiler:compile связана с Ρ„Π°Π·ΠΎΠΉ compile , Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡŒ surefire:test связана с Ρ„Π°Π·ΠΎΠΉ test . Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

mvn test

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Maven запускаСт всС Ρ†Π΅Π»ΠΈ, связанныС с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„Π°Π·, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Ρ„Π°Π·Ρ‹ test Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Maven запускаСт Ρ†Π΅Π»ΡŒ resources:resources , ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с Ρ„Π°Π·ΠΎΠΉ process-resources , Π·Π°Ρ‚Π΅ΠΌ compiler:compile ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ°, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½Π΅ запускаСт Ρ†Π΅Π»ΡŒ surefire:test .

Однако, Π΄Π°ΠΆΠ΅ Ссли этап сборки ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ этап ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки, способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ выполняСт эти обязанности, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. И это дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ объявлСния Ρ†Π΅Π»Π΅ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½Π°, привязанных ΠΊ этим этапам сборки.

ЦСль ΠΏΠ»Π°Π³ΠΈΠ½Π° прСдставляСт собой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ (Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΡƒΡŽ, Ρ‡Π΅ΠΌ Ρ„Π°Π·Π° сборки), которая способствуСт созданию ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ привязан ΠΊ Π½ΡƒΠ»ΡŽ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„Π°Π·Π°ΠΌ сборки. ЦСль, Π½Π΅ привязанная ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ„Π°Π·Π΅ сборки, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π²Π½Π΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки прямым Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния зависит ΠΎΡ‚ порядка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ†Π΅Π»ΡŒ(Π«) ΠΈ Ρ„Π°Π·Π°(Ρ‹) сборки. НапримСр, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. АргумСнты clean ΠΈ package ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°Π·Π°ΠΌΠΈ сборки, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ dependency:copy-dependencies -это Ρ†Π΅Π»ΡŒ (ΠΏΠ»Π°Π³ΠΈΠ½Π°).

mvn clean dependency:copy-dependencies package

Если это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Ρ‚ΠΎ сначала Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ„Π°Π·Π° clean (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ„Π°Π·Ρ‹ чистого ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° плюс саму Ρ„Π°Π·Ρƒ clean ), Π° Π·Π°Ρ‚Π΅ΠΌ Ρ†Π΅Π»ΡŒ dependency:copy-dependencies , ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„Π°Π·Ρƒ package (ΠΈ всС Π΅Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ„Π°Π·Ρ‹ сборки ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Ρ†Π΅Π»ΡŒ привязана ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким Ρ„Π°Π·Π°ΠΌ сборки, эта Ρ†Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСх этих Ρ„Π°Π·Π°Ρ….

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ„Π°Π·Π° сборки Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π»Π΅ΠΉ, связанных с Π½Π΅ΠΉ. Если Ρ„Π°Π·Π° сборки Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ связанных с Π½Π΅ΠΉ Ρ†Π΅Π»Π΅ΠΉ, Ρ‚ΠΎ эта Ρ„Π°Π·Π° сборки Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Но Ссли Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ нСсколько Ρ†Π΅Π»Π΅ΠΉ, связанных с Π½ΠΈΠΌ, ΠΎΠ½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ всС эти Ρ†Π΅Π»ΠΈ.

ВстроСнныС привязки ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

НСкоторыС Ρ„Π°Π·Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ†Π΅Π»ΠΈ, привязанныС ΠΊ Π½ΠΈΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. А для ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ эти привязки зависят ΠΎΡ‚ значСния ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ.

Maven Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°:

Бсылка 1

Бсылка 2

Eclipse ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для отобраТСния ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Maven

Maven — Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Apache Maven

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Apache Maven

Apache Maven — это инструмСнт управлСния ΠΈ понимания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². На основС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
(POM) Maven ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сборкой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ части ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Если Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ Maven ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «О MavenΒ».
Ρ€Π°Π·Π΄Π΅Π» Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven ΠΈ
список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π΅Π³ΠΎ основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π­Ρ‚ΠΎΡ‚ сайт Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Maven:

ИспользованиС Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Maven ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Maven ΠΈ Maven
Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Maven Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Maven для создания своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Β«10-ΠΌΠΈΠ½ΡƒΡ‚Π½Ρ‹ΠΉ тСст», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚
практичСский ΠΎΠ±Π·ΠΎΡ€ основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Maven ΠΈ список ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²
для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½Π΅.
Π£Π΄Π»ΠΈΠ½ΠΈΡ‚ΡŒ ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Maven Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория Maven
Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠΈΡˆΡƒΡ‰ΠΈΡ… ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Maven. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Maven, Π½ΠΎ заинтСрСсован Π² пСрСносС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²
Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
ВнСсти Π²ΠΊΠ»Π°Π΄ Π‘ΠΏΡ€Π°Π²ΠΊΠ° Maven Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Maven
Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ участиС.Maven — это сообщСство с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ привСтствуСт Π²ΠΊΠ»Π°Π΄. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π² настоящСС врСмя являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Maven, ΠΈΠ»ΠΈ ΠΊΠΎΠΌΡƒ интСрСсно
Π² участии Π² самом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Maven.

КаТдоС руководство Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° нСсколько ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅, ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя
справочная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈ «поварСнная ΠΊΠ½ΠΈΠ³Π°Β» ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ руководствам Π² любоС врСмя с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ справочник, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Maven доступна Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠΈΡ‰ΠΈΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ,
систСма управлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, Π²ΠΈΠΊΠΈ
ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ списков рассылки Π½Π°
ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π±Ρ‹Π»Π° Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΎ Π½Π΅ΠΉ ΡΠΎΠΎΠ±Ρ‰Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅.

Если ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π΅ ΡΠΎΠΎΠ±Ρ‰Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, рСкомСндуСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ.
ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° список рассылки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Maven.МногиС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Maven
ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ Π½Π° ваши вопросы Ρ‚Π°ΠΌ, ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ сохранСн для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Maven Ρ‡Π΅Ρ€Π΅Π· IRC.

Π€ΠΎΠ½Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Apache

Maven являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Apache Software Foundation. ΠœΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ
спонсоры, ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΠΈΠ½Π°Π½ΡΠΎΠ²ΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ Ρ„ΠΎΠ½Π΄Ρƒ. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ
Ρ„ΠΎΠ½Π΄, см. страницу спонсорства.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ мСроприятия Apache. НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π² спискС рассылки Maven User
Ссли Ρ‚Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Maven. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСкрасная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ с Π½ΠΈΠΌΠΈ.

Maven — Maven Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚

Установка

Maven — это инструмСнт Java, поэтому для продолТСния Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ установлСна ​​Java.

Π‘Π½Π°Ρ‡Π°Π»Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Maven ΠΈ слСдуйтС инструкциям ΠΏΠΎ установкС. ПослС этого Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Maven, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Главная страница Maven: D: \ apache-maven-3.6.3 \ apache-maven \ bin \ ..
ВСрсия Java: 1.8.0_232, поставщик: AdoptOpenJDK, срСда выполнСния: C: \ Program Files \ AdoptOpenJDK \ jdk-8.0.232.09-hotspot \ jre
Π›ΠΎΠΊΠ°Π»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: en_US, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Cp1250
НазваниС ОБ: "windows 10", вСрсия: "10.0", Π°Ρ€ΠΊΠ°: "amd64", сСмСйство: "windows" 

Π’ зависимости ΠΎΡ‚ настроСк вашСй сСти Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ настройка. ΠŸΡ€ΠΈ нСобходимости ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Руководством ΠΏΠΎ настройкС Maven.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Windows, Π²Π°ΠΌ слСдуСт ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования для Windows , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Maven Π² Windows.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’Π°ΠΌ понадобится мСсто для размСщСния вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, созданиС Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ запуск ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ†Π΅Π»ΡŒ Maven:

 mvn Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ: ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ -DgroupId = com.mycompany.app -DartifactId = my-app -DarchetypeArtifactId = maven-archetype-quickstart -DarchetypeVersion = 1.4 -DinteractiveMode = false 

Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ установили Maven, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запуск ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя.Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Maven Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ самыС послСдниС Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ (jar-Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹) Π² ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ нСсколько Ρ€Π°Π·, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ врСмя оТидания ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΡ‚Π΅Ρ‡ΡŒ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, Π΅ΡΡ‚ΡŒ способы ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это.

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»ΡŒ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ создала ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ artifactId. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Π’ этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

 ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
| - pom.xml
`- src
    | - главная
    | `- java
    | `- com
    | `- моя компания
    | `- ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
    | `- App.java
    `- тСст
        `- java
            `- com
                `- моя компания
                    `- ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
                        `- AppTest.java 

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ src / main / java содСрТит исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ src / test / java содСрТит исходный ΠΊΠΎΠ΄ тСста, Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ pom.xml — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ POM.

ПОМ

Π€Π°ΠΉΠ» pom.xml — это ядро ​​конфигурации ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Maven. Π­Ρ‚ΠΎ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. POM ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΡΡ‚Ρ€Π°ΡˆΠ°ΡŽΡ‰ΠΈΠΌ ΠΏΠΎ своСй слоТности, Π½ΠΎ совсСм Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСх тонкостях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ эффСктивно. POM этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

 <ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ xmlns = "http: // maven.apache.org/POM/4.0.0 "xmlns: xsi =" http://www.w3.org/2001/XMLSchema-instance "
  xsi: schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0 

   com.mycompany.app 
   ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 
   1.0-SNAPSHOT 

  <свойства>
     1.7 
     1,7 
  

  <зависимости>
    <Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ>
       junit 
       junit 
       4.12 
       тСст 
    
  
 
Π§Ρ‚ΠΎ я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлал?

Π’Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ Ρ†Π΅Π»ΠΈ Maven: ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ этой Ρ†Π΅Π»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ — это ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Ρ†Π΅Π»ΡŒ.Если Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Ant, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ. Π­Ρ‚ΠΎΡ‚ Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ : ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ создал простой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, основанный Π½Π° Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏΠ΅ maven-archetype-quickstart. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ достаточно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ с ΠΎΠ±Ρ‰ΠΈΠΌ ΠΎΠ±Ρ‰ΠΈΠΌ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. НапримСр, jboss-maven-plugin, Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ — Β«Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ элСмСнтами jbossΒ».

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Командная строка распСчатаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

...
[ИНЀОРМАЦИЯ] ----------------------------------------------- -------------------------
[ИНЀОРМАЦИЯ] Π‘ΠžΠ—Π”ΠΠ’Π¬ Π£Π‘ΠŸΠ•Π₯
[ИНЀОРМАЦИЯ] ----------------------------------------------- -------------------------
[ИНЀОРМАЦИЯ] ΠžΠ±Ρ‰Π΅Π΅ врСмя: 2,953 с.
[INFO] ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅: 2019-11-24T13: 05: 10 + 01: 00
[ИНЀОРМАЦИЯ] ----------------------------------------------- ------------------------- 

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (Π°Ρ€Ρ…Π΅Ρ‚ΠΈΠΏ : ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вторая — это просто ΠΎΠ΄Π½ΠΎ слово — package . ВмСсто Ρ†Π΅Π»ΠΈ , это Ρ„Π°Π·Π° .Π€Π°Π·Π° — это этап ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„Π°Π·. Когда Π·Π°Π΄Π°Π½Π° Ρ„Π°Π·Π°, Maven Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„Π°Π·Ρƒ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π·Π°Π΄Π°Π½Π½ΡƒΡŽ. НапримСр, Ссли ΠΌΡ‹ выполняСм этап , компиляция , фактичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ этапы:

  1. ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ
  2. источники-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  3. процСссы-источники
  4. Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы
  5. процСсс-рСсурсы
  6. compile

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π΄Π°Π²Π½ΠΎ скомпилированный ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ JAR с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

 java -cp Ρ†Π΅Π»ΡŒ / ΠΌΠΎΠ΅-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-1.0-SNAPSHOT.jar com.mycompany.app.App 

ΠšΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ сущСствСнноС:

Java 9 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ваша вСрсия Maven ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ maven-compiler-plugin , Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ с Java 9 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌΠΈ вСрсиями. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΈΠ½Π³ Π½Π° Java 9 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ позднюю Π²Π΅Ρ€ΡΠΈΡŽ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 3.6.0 ΠΏΠ»Π°Π³ΠΈΠ½Π° maven-compiler-plugin ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для свойства maven.compiler.release Π²Π΅Ρ€ΡΠΈΡŽ Java, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π½Π°Ρ†Π΅Π»ΠΈΠ²Π°Π΅Ρ‚Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 9, 10, 11 , 12 ΠΈ Ρ‚. Π”.).

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ настроили наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Maven для использования вСрсии 3.8.1 ΠΈΠ· maven-compiler-plugin ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Java 11:

 <Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡ‚ΡŒ>
         11 
    

    <сборка>
        
            <ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹>
                <ΠΏΠ»Π°Π³ΠΈΠ½>
                     org.apache.maven.plugins 
                     maven-compiler-plugin 
                    <вСрсия> 3.8.1 
                
            
        
     

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ javac --release , см. JEP 247.

Запуск инструмСнтов Maven

Π€Π°Π·Ρ‹ Maven

Π₯отя это ΠΈ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список, это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС этапы ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ .

  • ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ : ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ всСй Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ
  • compile : ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
  • test : протСстируйтС скомпилированный исходный ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ подходящСй срСды ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования.Π­Ρ‚ΠΈ тСсты Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Π±Ρ‹Π» ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚
  • ΠΏΠ°ΠΊΠ΅Ρ‚ : Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ скомпилированный ΠΊΠΎΠ΄ ΠΈ ΡƒΠΏΠ°ΠΊΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² распространяСмый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ JAR.
  • integration-test : ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π² срСдС, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты
  • verify : Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ дСйствитСлСн ΠΈ соотвСтствуСт критСриям качСства
  • ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ : ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для использования Π² качСствС зависимости Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… локально
  • Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ : выполняСтся Π² срСдС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ выпуска, послСдний ΠΏΠ°ΠΊΠ΅Ρ‚ копируСтся Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для совмСстного использования с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Π•ΡΡ‚ΡŒ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° Maven, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ списка ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ . Π˜Ρ…

  • clean : ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹, созданныС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ сборками
  • сайт : создаСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ сайта для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π€Π°Π·Ρ‹ фактичСски сопоставлСны с основными цСлями. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ, выполняСмыС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС, зависят ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НапримСр, package выполняСт jar: jar , Ссли Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° — JAR, ΠΈ war: war , Ссли Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° — ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅ догадались — WAR.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ этапы ΠΈ Ρ†Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

 mvn чистая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ: ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΊΠΎΠΏΠΈΠΉ-зависимостСй 

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° очистит ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, скопируСт зависимости ΠΈ ΡƒΠΏΠ°ΠΊΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ всС Ρ„Π°Π·Ρ‹ Π΄ΠΎ , ΠΏΠ°ΠΊΠ΅Ρ‚Π° ).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сайта

На этом этапС создаСтся сайт Π½Π° основС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠΎΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ target / site .

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven? Π Π°ΠΌΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° | Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven?

Maven — это инструмСнт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ управлСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Apache Software Foundation. Он написан Π½Π° языкС Java для создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², написанных Π½Π° C #, Ruby, Scala ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Он позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, зависимости ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. Он ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ ANT, Π½ΠΎ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ, Ρ‡Π΅ΠΌ ANT.

Maven Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ любоС количСство ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ jar, war, metadata.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ 13 июля 2004 Π³ΠΎΠ΄Π°. На языкС идиш Maven ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ Π·Π½Π°Π½ΠΈΠΉΒ».

Π’ этом руководствС ΠΏΠΎ Maven для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ основы Maven, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Maven ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΌΠ½Π΅ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ?

Maven ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ созданиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° основС Java. Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, созданной ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² Maven, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​в ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Maven.Π­Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ процСсса ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

Основная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Maven Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ зависимостСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… популярных IDE, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Maven Framework:

  • Eclipse
  • IntelliJ IDEA
  • JBuilder
  • NetBeans
  • MyEclipse

  • Build
  • ДокумСнтация
  • ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ maven
  • ΠžΡ‚Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ
  • Зависимости
  • SCM
  • Π Π΅Π»ΠΈΠ·Ρ‹
  • РаспространСниС
  • список рассылки
  • АрхитСктура Maven

    АрхитСктура Maven Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя jar ΠΏΠ»Π°Π³ΠΈΠ½Π°, Ρ„Π°ΠΉΠ» ΠΊΠΎΠ΄Π° ΠΈ Ρ‚. Π”.

    АрхитСктура Maven

    Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Maven

    • Для настройки Maven Π½Π° Java Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, которая хранится Π² Ρ„Π°ΠΉΠ»Π΅ pom.xml.
    • POM Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, относящиСся ΠΊ Maven. ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Π³Π΅ Ρ„Π°ΠΉΠ»Π° pom.xml. И Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой ΠΏΠ»Π°Π³ΠΈΠ½ Π±Π΅Π· Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°.
    • Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Maven Project, ΠΎΠ½ прСдоставляСт настройки ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, поэтому ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² pom.xml

    Π¨Π°Π³ΠΈ / процСсс, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

    • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ / Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для создания прилоТСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ исходного ΠΊΠΎΠ΄Π°
    • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ / pom.XML / свСдСния ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅
    • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
    • Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ процСсса сборки Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° WAR ΠΈΠ»ΠΈ EAR Π² локальноС располоТСниС ΠΈΠ»ΠΈ Π½Π° сСрвСр
    • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈΠ· локального мСстополоТСния ΠΈΠ»ΠΈ сСрвСра ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π½Π° производствСнном сайтС ΠΈΠ»ΠΈ клиСнтском сайтС
    • ОбновлСн Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ прилоТСния с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Ρ‚Ρ‹ ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ вСрсии ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
    • создаСт ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Ρ‡Π΅Ρ‚ Π² соотвСтствии с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

    ОписаниС:

    • Maven — это инструмСнт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ управлСния.
    • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Maven написан Π½Π° языкС Java ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΈ управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, написанными Π½Π° C # (C Sharp), Ruby, Scala ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках.
    • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π»Π΅Π³Ρ‡Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π° основС Java с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнта Maven.
    • Для настройки Maven Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, которая хранится Π² Ρ„Π°ΠΉΠ»Π΅ pom.xml.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven?

    ОбъяснСниС Maven

    Apache Maven — это инструмСнт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Java.ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ant ΠΈΠ»ΠΈ Make, Π½ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡ‰Π½Π΅Π΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ Π² использовании. Если Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ со сборкой Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с зависимостями ΠΈΠ»ΠΈ особыми трСбованиями ΠΊ сборкС, Π²Ρ‹, вСроятно, ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ»ΠΈ разочарования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Maven стрСмится ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ.

    Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я объясню Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΎΠ± этом инструмСнтС, ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΈ, надСюсь, ΠΎΡ‚Π²Π΅Ρ‡Ρƒ Π½Π° ваш вопрос — Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven?

    Π§Π΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Maven?

    Maven являСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ Apache с 2003 Π³ΠΎΠ΄Π°, начиная с Sonatype Π΄ΠΎ этого.Учитывая Π΅Π³ΠΎ ΡΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, Maven являСтся ΠΎΡ‡Π΅Π½ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ, прСдоставляя многочислСнныС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΎΡ‚ создания PDF-вСрсий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎ создания списка послСдних ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· вашСго SCM. И всС, Ρ‡Ρ‚ΠΎ трСбуСтся для добавлСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, — это нСбольшой Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ XML-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

    Π£ вас ΠΌΠ½ΠΎΠ³ΠΎ зависимостСй? Π‘Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Maven ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ рСпозиториям (ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свои собствСнныС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ) ΠΈ автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ всС зависимости, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для сборки вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    НапримСр, допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ инструмСнт ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Apache Camel вСрсии 2.10.6, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ новая вСрсия Camel, 2.11.1. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π²Π΅Π±-сайт Apache, Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ дистрибутив 2.11.1 ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠΌ 2.10.6, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Maven ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ дистрибутив, ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π·Π° вас. НС Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ слоТно Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ Java ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ это для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… зависимостСй ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….Π­Ρ‚ΠΎ нСбольшой ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΎΠ½ быстро накапливаСтся.

    Как Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Maven?

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Maven Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ просто, Ссли Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ нСсколько основных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ содСрТит Ρ„Π°ΠΉΠ», Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ POM (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой просто XML-Ρ„Π°ΠΉΠ», содСрТащий свСдСния ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. НСкоторыС ΠΈΠ· этих Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Π΅Ρ€ΡΠΈΡŽ, Ρ‚ΠΈΠΏ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, зависимости, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Maven ΠΈ Ρ‚. Π”.

    (ΠΎΡ‡Π΅Π½ΡŒ) простой Ρ„Π°ΠΉΠ» pom.xml ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

      <ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ xmlns = "http: // maven.apache.org/POM/4.0.0 "xmlns: xsi =" http://www.w3.org/2001/XMLSchema-instance "
      xsi: schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      
       4.0.0 
       com.stackabuse.myproject 
       ΠΌΠΎΠΉΠΏΡ€ΠΎΠ΅ΠΊΡ‚ 
      <ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°> Π±Π°Π½ΠΊΠ° 
       1.0-SNAPSHOT 
      
       ΠΌΠΎΠΉΠΏΡ€ΠΎΠ΅ΠΊΡ‚ 
       http://stackabuse.com 
      
      <сборка>
        <ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹>
          <ΠΏΠ»Π°Π³ΠΈΠ½>
             maven-myquery-plugin 
            <вСрсия> 1.0 
            <конфигурация>
               http://foobar.com 
               10 
              <Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹>
                
                
              
            
          
        
      
      
      <зависимости>
      <Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ>
       org.apache.camel 
       Π²Π΅Ρ€Π±Π»ΡŽΠΆΡŒΠ΅ ядро ​​
      <вСрсия> 2.11.1 
      
      <Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ>
       org.apache.camel 
       Π²Π΅Ρ€Π±Π»ΡŽΠ΄-http 
       2.11.1 
      
        <Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ>
           junit 
           junit 
           3.8.1 
           тСст 
        
      
      
    
      

    НС Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ ΠΎΠ±ΠΎ всСх ΠΌΠ΅Π»ΠΊΠΈΡ… дСталях этого XML, просто ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ содСрТимоС находится Π² pom.xml, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ имя, вСрсия ΠΈ зависимости. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ большая Ρ‡Π°ΡΡ‚ΡŒ вашСго взаимодСйствия с Maven, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ — Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

    Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Maven, всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ:

      mvn [ΠΊΠΎΠΌΠ°Π½Π΄Π°]
      

    Команда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколькими Π²Π΅Ρ‰Π°ΠΌΠΈ, Π½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ нСсколько:

    • test : запускаСт всС тСсты для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
    • clean : УдаляСт всС старыС Ρ„Π°ΠΉΠ»Ρ‹ сборки
    • ΠΏΠ°ΠΊΠ΅Ρ‚ : ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² jar (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ)
    • install : ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Maven
    • deploy : ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Maven

    Maven — это огромная Ρ‚Π΅ΠΌΠ°, ΠΈ это ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Maven, поэтому ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с рСсурсами Π½ΠΈΠΆΠ΅ для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π° самом Π΄Π΅Π»Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

    Π£Π·Π½Π°Ρ‚ΡŒ большС

    Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± Apache Maven? ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-курс, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Maven Crash Course, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, Ρ‡Π΅ΠΌ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅. Он Π½Π°ΡƒΡ‡ΠΈΡ‚ вас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ваТнСйший инструмСнт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Java, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Eclipse. Π‘Π΅Ρ€ΡŒΠ΅Π·Π½ΠΎ, ΡΡΠΊΠΎΠ½ΠΎΠΌΡŒΡ‚Π΅ врСмя ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ ΡƒΡ€ΠΎΠΊΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… рСсурсов.

    РСсурсы

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven? | Rebel

    Π’ этом Π±Π»ΠΎΠ³Π΅ ΠΌΡ‹ Π΄Π°Π΅ΠΌ ΠΎΠ±Π·ΠΎΡ€ Maven, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ сравниваСм прСимущСства ΠΈ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Maven, Gradle ΠΈ Ant.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven?

    Maven, ΠΈΠ»ΠΈ MVN, прСдставляСт собой ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Java для управлСния ΠΈ создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ для поддСрТания зависимостСй.

    Для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Maven?

    Π‘Π΅Π· инструмСнта сборки ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ созданиС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΌ, Π΄ΠΎΠ»Π³ΠΈΠΌ ΠΈ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΡΡ процСссом. Π‘ Maven Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ систСму зависимостСй, ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ.

    Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Maven?

    Π‘Π°ΠΌ Maven Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π±Ρ‹Π»Π° установлСна ​​Java. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, установлСн Π»ΠΈ Maven Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, запустив Β«mvn -vΒ» Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС / Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅. Maven основан Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (POM), которая хранится Π² ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΌ XML-Ρ„Π°ΠΉΠ»Π΅ — pom.xml. Π­Ρ‚ΠΎ структурированный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΅Π³ΠΎ зависимости, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈ Ρ†Π΅Π»ΠΈ.

      
    <ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ xmlns = "http: // maven.apache.org/POM/4.0.0 "
             xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
             xsi: schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
         4.0.0 
    
         org.example 
         SampleProject 
         1.0-SNAPSHOT 
    
        <зависимости>
            <Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ>
                 junit 
                 junit 
                <вСрсия> 4.13 
                 тСст 
            
        
    
    
      

    Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСна ​​структура простого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ стороннСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ JUnit. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» всСгда находится Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ управлСния Maven ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„Π°ΠΉΠ» ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСстополоТСния. Maven Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ прСдставлСн ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ pom.xml хранится Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

    ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ Maven ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сборки

    ВсС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с использованиСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«mvn [plugin_name]: [goal]Β». ЦСль Π² основном прСдставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ»Π°Π³ΠΈΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Π’ Maven ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², поэтому Π²Ρ‹ часто ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Π΅Π· [plugin_name], Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«mvn compileΒ». ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΎ врСмя сборки прилоТСния ΠΈΠ½ΠΎΠ³Π΄Π° вызываСтся большС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Maven опрСдСляСт ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сборки.Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для связывания ΠΏΠ»Π°Π³ΠΈΠ½Π° с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ„Π°Π· ΠΈ ΠΊΠΎΠ³Π΄Π° Ρ„Π°Π·Π° выполняСтся, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это ΠΏΠ»Π°Π³ΠΈΠ½. Maven опрСдСляСт ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ этапам:

    • ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ всСй Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ
    • компиляция — компиляция исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
    • ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° скомпилированного исходный ΠΊΠΎΠ΄ с использованиСм подходящСй срСды ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования. Π­Ρ‚ΠΈ тСсты Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Π±Ρ‹Π» ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚.
    • package — Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ скомпилированный ΠΊΠΎΠ΄ ΠΈ ΡƒΠΏΠ°ΠΊΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Π΅Π³ΠΎ распространяСмом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ JAR.
    • verify — запускаСт Π»ΡŽΠ±Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов для обСспСчСния соотвСтствия критСриям качСства
    • install — устанавливаСт ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для использования Π² качСствС зависимости Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… локально
    • deploy — Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² срСдС сборки ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для совмСстного использования с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

    Волько Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Maven? Наша одностраничная ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список ΠΎΠΏΡ†ΠΈΠΉ Maven, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π½Π° вашСм ΠΏΡƒΡ‚ΠΈ.

    ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ

    ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π° Π»ΠΈ Maven?

    Maven, Π±Π΅Π· сомнСния, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых популярных инструмСнтов сборки Π½Π° Java. ВмСстС с Gradle, Π΄Ρ€ΡƒΠ³ΠΈΠΌ инструмСнтом сборки с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² 90% ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Java. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ant ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Π΅ инструмСнты сборки.

    Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: ΠžΡ‚Ρ‡Π΅Ρ‚ Java Developer Productivity Report Π·Π° 2020 Π³ΠΎΠ΄

    Π§Ρ‚ΠΎ касаСтся ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Maven.Для ΠΌΠ½ΠΎΠ³ΠΈΡ… самыС большиС прСимущСства Maven Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ управляСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с зависимостями.

    Maven ΠΏΡ€ΠΎΡ‚ΠΈΠ² Gradle

    Π₯отя ΠΎΠ±Π° инструмСнта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΡŒΡŽ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса сборки прилоТСния, всС ΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствСнныС различия. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Maven ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ XML (pom.xml) для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Gradle ΠΈΠΌΠ΅Π΅Ρ‚ свой собствСнный ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык (DSL) Π½Π° основС ΠΊΠΎΠ΄Π° Groovy (build.gradle) ΠΈΠ»ΠΈ Kotlin (build.gradle.kts).

    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Maven vs.Gradle
    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Maven ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Gradle
    Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт сборки для Android
    POM — Π»Π΅Π³Ρ‡Π΅ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
    Доступно мноТСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ИспользованиС Groovy / Kotlin
    Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ IDE Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ
    Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями

    Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Gradle ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ язык программирования, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большим плюсом для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄.ΠŸΡ€ΠΈ прямом сравнСнии ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с Maven Gradle часто Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… областях.

    Π‘Π»ΠΎΠ³ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅: УскорСниС сборки Gradle

    Maven ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ant

    Apache Ant являСтся ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠΌ Apache Maven. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² 2000 Π³ΠΎΠ΄Ρƒ, Ant Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° инструмСнта сборки Make, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ использовался ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ XML-Ρ„Π°ΠΉΠ», Ant ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ сборки. Но Π±Π΅Π· добавлСния ΠΏΠ»Π°Π³ΠΈΠ½Π° Apache Ivy Ant Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями.

    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Maven ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ant
    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Maven ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ant
    Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ
    POM — Π»Π΅Π³Ρ‡Π΅ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ НСт соглашСния ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ
    МногиС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ доступно НСт ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
    Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ IDE

    ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Ant Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΡˆΠ»Π° Π½Π° Maven, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инструмСнтом сборки, Π½ΠΎ ΠΈ слоТным инструмСнтом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ряд ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ant Π² качСствС основного инструмСнта сборки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ SAP Hybris.

    Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мысли

    Π‘Π΅Π· Ρ‚Π°ΠΊΠΈΡ… инструмСнтов сборки, ΠΊΠ°ΠΊ Maven ΠΈΠ»ΠΈ Gradle, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ сопровоТдСниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΌ процСссом. Maven — ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΈ управляСт всСми зависимостями. Gradle Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Ρ‹Π½ΠΊΠ° инструмСнтов сборки Java ΠΈ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни фокусируСтся Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅Π»ΠΈ — ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ процСссом сборки. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ±Π° инструмСнта.Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊ, Apache Ant, всС Π΅Ρ‰Π΅ сущСствуСт с Π½Π°ΠΌΠΈ, Π½ΠΎ Π΅Π³ΠΎ рыночная доля сСйчас ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π°.

    Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΎΠ±Π΄ΡƒΠΌΡ‹Π²Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ инструмСнт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, всСгда провСряйтС основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΠΎΠΈΡ… инструмСнтов ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вас. Π₯отя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Android, скорСС всСго, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Gradle, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это инструмСнт сборки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Android, ΠΎΠ½ΠΈ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Maven. Maven ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΈ Π΅ΡΡ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Android-Maven, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Maven.

    Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы

    Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ обсуТдСниС Maven ΠΈ Π΅Π³ΠΎ мСста Π² пространствС инструмСнтов сборки Java, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ посмотритС этот Π²Π΅Π±-сСминар. Π’ Π½Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ нашСго опроса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Java Π·Π° 2020 Π³ΠΎΠ΄, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎ основным тСхнологиям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСгодня ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² прилоТСниях Java.

    Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, относящийся ΠΊ Maven, стоит ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π½ΠΈΠΆΠ΅ ссылками.

    БСгодня оптимизация процСссов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π°ΠΆΠ½Π° ΠΊΠ°ΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π°.Π’Π°ΠΊ какая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° встаСт Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Java? ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅! Если Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ JRebel. JRebel позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ состояниС прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… получаСтся Π»ΡƒΡ‡ΡˆΠ΅ всСго, создавая ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠ΅ прилоТСния Java.

    ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ JRebel бСсплатно

    Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Maven — javatpoint

    Π£Ρ‡Π΅Π±Π½ΠΈΠΊ

    Maven прСдоставляСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ apache maven . Наш ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ maven Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ профСссионалов.

    Maven — это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ , основанный Π½Π° POM (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°). Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², зависимостСй ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

    Он ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс сборки, ΠΊΠ°ΠΊ ANT. Но ΠΎΠ½ слишком ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚, Ρ‡Π΅ΠΌ ANT.

    ВСкущая вСрсия Maven — 3.


    ПониманиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Π΅Π· Maven

    Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ сталкиваСмся ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Они ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π½ΠΈΠΆΠ΅:

    1) Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° Jar-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: Π’ случаС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² struts, spring, hibernate, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ jar-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.Он Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ всС зависимости jar-Ρ„Π°ΠΉΠ»ΠΎΠ².

    2) Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² сСрвлСтС, стойках ΠΈ Ρ‚. Π”., Π˜Π½Π°Ρ‡Π΅ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.

    3) Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.


    Π§Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚?

    Maven ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Он выполняСт Π² основном ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

    1. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
    2. Он обСспСчиваСт Π΅Π΄ΠΈΠ½Ρ‹ΠΉ процСсс сборки (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ maven ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСми ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ maven)
    3. Он прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΆΡƒΡ€Π½Π°Π»Π°, источники с пСрСкрСстными ссылками, список рассылки, список зависимостСй, ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΠΈ Ρ‚. Π”.)
    4. Π›Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Maven

    Apache Maven ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ

    • Π‘Ρ‚Ρ€ΠΎΠΈΡ‚
    • ДокумСнтация
    • Π Π΅ΠΌΠΎΠ½Ρ‚
    • SCM
    • Π Π΅Π»ΠΈΠ·Ρ‹
    • РаспрСдСлСниС

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Build Tool

    Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ сборки позаботится ΠΎΠ±ΠΎ всСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ процСсс. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

    • Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ исходный ΠΊΠΎΠ΄ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ автоматичСски созданный ΠΊΠΎΠ΄)
    • Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ· исходного ΠΊΠΎΠ΄Π°
    • ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄
    • Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² JAR ΠΈΠ· ZIP-Ρ„Π°ΠΉΠ»Π°
    • УстанавливаСт ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ сСрвСра ΠΈΠ»ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

    ИндСкс Maven


    Maven Π² Eclipse

    Π˜Π½Ρ‚Π΅Ρ€Π²ΡŒΡŽ с Maven


    Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹?

    ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, сборки ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅

    — Stackify

    Gradle — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Java, прСдставлСнных Π² КомплСксном руководствС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Java ΠΎΡ‚ Stackify, Π½ΠΎ это Π½Π΅ СдинствСнный инструмСнт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.Maven — Π±ΠΎΠ»Π΅Π΅ старая ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°, Π½ΠΎ какая систСма сборки Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°? Π‘ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ инструмСнтами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Spring, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя систСмами, Π² сочСтании с растущим числом ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ для ΠΎΠ±Π΅ΠΈΡ…, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни зависит ΠΎΡ‚ вас.

    Π Π°Π·ΠΌΠ΅Ρ€ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ваши потрСбности Π² настройкС ΠΈ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π² Π²Ρ‹Π±ΠΎΡ€Π΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм.



    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Gradle?

    Gradle — это систСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки с ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Apache Maven ΠΈ Apache Ant.Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, основанный Π½Π° языкС программирования Groovy, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ Apache Maven, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ XML для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт порядок выполнСния Π·Π°Π΄Π°Ρ‡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ацикличСского Π³Ρ€Π°Ρ„Π°.

    НСсколько Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² создали Gradle ΠΈ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ выпустили Π΅Π³ΠΎ Π² 2007 Π³ΠΎΠ΄Ρƒ, Π° Π² 2013 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ Π±Ρ‹Π» принят Google Π² качСствС систСмы сборки для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Android. Он Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… сборок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ оТидаСтся, Π±ΡƒΠ΄ΡƒΡ‚ довольно большими. Он Ρ‚Π°ΠΊΠΆΠ΅ позволяСт постСпСнно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π²Π°ΡˆΡƒ сборку, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ части вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ.Π—Π°Π΄Π°Ρ‡ΠΈ, зависящиС ΠΎΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, большС Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ послСднСй ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсиСй являСтся вСрсия 3.4, выпущСнная Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ 2017 Π³ΠΎΠ΄Π°. Она ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ с использованиСм Java, Scala ΠΈ Groovy, Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы ΠΈ языки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Maven?

    Maven ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с использованиСм Java. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ построСно ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ зависимости.Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» XML для описания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ создаСтС, зависимостСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ сторонних ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ частСй, порядка сборки, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡, ΠΊΠ°ΠΊ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ компиляция.

    Maven Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Π° Π·Π°Ρ‚Π΅ΠΌ помСстит ΠΈΡ… всС Π² кэш Π½Π° вашСм локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π₯отя ΠΎΠ½ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Java, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для Scala, Ruby ΠΈ C #, Π° Ρ‚Π°ΠΊΠΆΠ΅ для мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ… языков.

    Gradle vs. Maven

    Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ различия Π² способах построСния Π΄Π²ΡƒΡ… систСм. Gradle основан Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ зависимостСй Π·Π°Π΄Π°Ρ‡, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ — это Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Maven основан Π½Π° фиксированной ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ„Π°Π·. Π’ Maven Ρ†Π΅Π»ΠΈ привязаны ΠΊ Ρ„Π°Π·Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Ρ†Π΅Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Gradle, являясь Β«Π²Π΅Ρ‰Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚ΡƒΒ».

    Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ±Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… сборок.Однако Gradle допускаСт ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ сборки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ провСряСт, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π½Π΅Ρ‚. Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ выполняСтся, Ρ‡Ρ‚ΠΎ сокращаСт врСмя сборки. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ особСнности ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² Gradle, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

    • Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ компиляции для классов Java
    • ИзбСганиС компиляции для Java
    • ИспользованиС API для ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡
    • Π”Π΅ΠΌΠΎΠ½ компилятора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ

    Когда Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ зависимостями, ΠΈ Gradle, ΠΈ Maven ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ динамичСскиС ΠΈ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ зависимости, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сторонниС кСши зависимостСй ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… POM.Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ управлСния вСрсиями ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями. Оба Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ зависимости ΠΈΠ· своих Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ². Π£ Maven Π΅ΡΡ‚ΡŒ Maven Central, Π° Ρƒ Gradle Π΅ΡΡ‚ΡŒ JCenter, ΠΈ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свой собствСнный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ частной ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Если трСбуСтся нСсколько зависимостСй, Maven ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

    Gradle, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ зависимостСй API ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅, ΠΏΠΎ сути, позволяя ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ использованиС бСзопасных кСшСй.Он Ρ‚Π°ΠΊΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ рСпозитория вмСстС с ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ зависимостями, гарантируя, Ρ‡Ρ‚ΠΎ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ кСш, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, ΠΈ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ кСш Π½Π° основС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ кСш с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Gradle совмСстим с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ IVY, Ρ‡Ρ‚ΠΎ позволяСт Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ собствСнныС ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ для динамичСской зависимости ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ вСрсий. Они нСдоступны Π² Maven.

    Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ управлСния зависимостями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Gradle:

    • ИспользованиС ΠΏΡ€Π°Π²ΠΈΠ» Π·Π°ΠΌΠ΅Π½Ρ‹ для совмСстимых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ
    • ИспользованиС ΠΏΡ€Π°Π²ΠΈΠ» ReplacedBy
    • Π›ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…
    • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ динамичСски Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° внСшними , ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚

    Gradle Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с составными сборками ΠΈ позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ постоянными составными сборками, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сборки ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΡΡ‚Π°Π²Π½ΡƒΡŽ сборку Π² Eclipse of IntelliJ. Π˜Π”Π•Π―.

    Π§Ρ‚ΠΎ касаСтся ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ выполнСния, Ρƒ ΠΎΠ±Π΅ΠΈΡ… Π΅ΡΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π·Π°Π΄Π°Ρ‡ ΠΈ описания. Оба ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΅Π³ΠΎ зависимости. Однако Gradle ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настраиваСмый DAG, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ с Maven Ρ†Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ привязана Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π΅Π»ΠΈ. НСсколько Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ упорядочСнного списка. Gradle Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ зависимостСй Π·Π°Π΄Π°Ρ‡. Gradle Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для упорядочивания Π·Π°Π΄Π°Ρ‡ ΠΈ Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ.

    АдминистрированиС инфраструктуры сборки — Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° сильная сторона Gradle, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ с Maven Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сборок с самоподготовкой. Gradle Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ срСды сборки Π½Π° основС вСрсий Π±Π΅Π· нСобходимости Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ дистрибутивы.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

    ΠŸΡ€ΠΈ сравнСнии Ant, Gradle ΠΈ Maven ΠΠ°Ρ€Π΅Ρˆ Π”ΠΆΠΎΡˆΠΈ сравниваСт ΠΊΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для создания сцСнария сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компилируСтся, выполняСт статичСский Π°Π½Π°Π»ΠΈΠ·, запускаСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты ΠΈ создаСт Ρ„Π°ΠΉΠ»Ρ‹ JAR Π² Programming Mitra.

    Π’ΠΎΡ‚ ΠΊΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для этого с Maven:

     
    
     4.0.0 
     com.programming.mitra 
     инструмСнты для сборки Java 
    <ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°> Π±Π°Π½ΠΊΠ° 
     1.0 
    
    <зависимости>
    <Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ>
     junit 
     junit 
    <вСрсия> 4.11 
    
    
    
    <сборка>
    <ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹>
    <ΠΏΠ»Π°Π³ΠΈΠ½>
     org.apache.maven.plugins 
     maven-compiler-plugin 
     2.3.2 
    
    
    
    
     

    Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΡŒ Maven, которая создаСт Ρ„Π°ΠΉΠ» JAR, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

     mvn package
     

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠΎΠ΄Π° Π²Ρ‹ устанавливаСтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Maven CheckStyle, FindBugs ΠΈ PMD) для выполнСния статичСского Π°Π½Π°Π»ΠΈΠ·Π° Π² качСствС Π΅Π΄ΠΈΠ½ΠΎΠΉ Ρ†Π΅Π»ΠΈ вмСстС с ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌΠΈ тСстами, Π½ΠΎ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ стиля Ρ‚Π°ΠΌΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ сработаСт ΠΏΡ€ΠΈ ошибкС. , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ:

     <ΠΏΠ»Π°Π³ΠΈΠ½>
     org.apache.maven.plugins 
     maven-checkstyle-plugin 
     2.12.1 
    <ΠΊΠ°Π·Π½ΠΈ>
    <Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅>
    <конфигурация>
     config / checkstyle / checkstyle.xml 
     истина 
     истина 
    
    <Ρ†Π΅Π»ΠΈ>
     ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ 
    
    
    
    
    <ΠΏΠ»Π°Π³ΠΈΠ½>
     org.codehaus.mojo 
     findbugs-maven-plugin 
     2.5.4 
    <ΠΊΠ°Π·Π½ΠΈ>
    <Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅>
    <Ρ†Π΅Π»ΠΈ>
     ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ 
    
    
    
    
    <ΠΏΠ»Π°Π³ΠΈΠ½>
     org.apache.maven.plugins 
     maven-pmd-plugin 
     3.1 
    <ΠΊΠ°Π·Π½ΠΈ>
    <Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅>
    <Ρ†Π΅Π»ΠΈ>
     ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ 
    
    
    
    
     

    Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ†Π΅Π»ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

     mvn verify
     

    ВрСбуСтся довольно ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° XML для выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основных ΠΈ ΠΎΠ±Ρ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡, ΠΈ ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π² Maven с большим количСством Π·Π°Π΄Π°Ρ‡ ΠΈ зависимостСй ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ pom.xml, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΎΡ‚ сотСн Π΄ΠΎ тысяч строк ΠΊΠΎΠ΄Π°.

    Для сравнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° build.gradle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

     apply plugin: 'java'
    ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½: 'checkstyle'
    ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½: 'findbugs'
    ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½: 'pmd'
    
    вСрсия = '1.0'
    
    Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ {
        mavenCentral ()
    }
    
    dependencies {
        Π“Ρ€ΡƒΠΏΠΏΠ° testCompile: 'junit', имя: 'junit', вСрсия: '4.11'
    }
     

    Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ ΠΎΡ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ΠΎΠΌ Maven.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ для списка Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Gradle ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ:

     gradle tasks --all
     

    Как Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

    Π’ Ρ†Π΅Π»ΠΎΠΌ, ΠΎΠ±Π° инструмСнта ΠΈΠΌΠ΅ΡŽΡ‚ свои ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны.

    • Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сборки. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Maven Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ зависимости своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ созданиС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настраиваСмой сборки ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΡˆΠΌΠ°Ρ€ΠΎΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Maven. POM-Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·Π΄ΡƒΡ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ впослСдствии ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ XML-Ρ„Π°ΠΉΠ»ΠΎΠΌ.
    • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями ΠΈ структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Maven обСспСчиваСт простоС, Π½ΠΎ эффСктивноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями, Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² для Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρƒ вас Π΅ΡΡ‚ΡŒ своСго Ρ€ΠΎΠ΄Π° стандартный ΠΌΠ°ΠΊΠ΅Ρ‚ для всСх Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ XML-Ρ„Π°ΠΉΠ» для своСго POM-Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Gradle ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Maven, Π½ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ GAV, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Maven ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ².
    • ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. Maven Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр этапов ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° сборки ΠΈ Π»Π΅Π³ΠΊΠΎ интСгрируСтся со сторонними инструмСнтами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ сСрвСры CI, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ покрытия ΠΊΠΎΠ΄Π° ΠΈ систСмы Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ², срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ. Π§Ρ‚ΠΎ касаСтся ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Ρ‚ΠΎ сСйчас количСство доступных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² растСт, ΠΈ Π΅ΡΡ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ поставщики, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, совмСстимыС с Gradle. Однако для Maven всС Π΅Ρ‰Π΅ доступно большС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с количСством, доступным для Gradle.
    • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Gradle ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΎΠΊ ΠΈ основан Π½Π° скриптС. На Gradle Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС сборки. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Gradle фактичСски Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, количСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π·Π½Π°ΡŽΡ‰ΠΈΡ… Gradle Π½Π°ΠΈΠ·Π½Π°Π½ΠΊΡƒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ.

    Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅, Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Gradle Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ. Однако Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚. Maven Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π° Gradle — для Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ….Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Maven ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ пСрСрос Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ с Maven Π½Π° Gradle.

    Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы ΠΈ руководства ΠΏΠΎ Gradle ΠΈ Maven

    Для дальнСйшСго чтСния ΠΈ получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… руководств, посСтитС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ рСсурсы:

    • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ΅ тСстированиС? Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, инструмСнты, руководства ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ — 5 фСвраля 2021 Π³.
    • Americaneagle.com ΠΈ ROC Commerce ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ с Retrace — 25 сСнтября 2020 Π³.
    • НовыС Ρ†Π΅Π½Ρ‹ Stackify: всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ — 9 сСнтября 2020 Π³.
    • Π˜ΠΠΠžΠ’ΠΠ’ΠžΠ Π« ΠŸΠ ΠžΠ’Π˜Π’ COVID 19 ΠœΡΡ‚Ρ‚ Уотсон, Π³Π΅Π½Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ Stackify, совСтуСт прСдприниматСлям ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π²Π΅Ρ‰Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈΡ… счастливыми, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, являСтся Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ ΠΏΠΎΠΆΠ°Ρ€ΠΎΠΌ Π² мусорном ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ — 2 сСнтября 2020 Π³.
    • Stackify присоСдиняСтся ΠΊ 2020 Inc.

    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *