Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle

ΠœΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Gradle. Π¨Π°Π³ Π·Π° шагом

ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ статСй ΠΎ Gradle написано. И со своСй стороны Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΏΠΈΠ»ΠΊΡƒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, я надСюсь, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ Π·Π½Π°ΠΊΠΎΠΌ с Gradle, β€œΡ€Π°ΡΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒβ€ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ этот инструмСнт.

Данная ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ gradle (plugin), Π·Π°Π΄Π°Ρ‡ΠΈ (task), зависимости (dependencies), автоматичСскоС тСстированиС ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ прСлСсти этого сборщика ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, каТдая Ρ‚Π΅ΠΌΠ° заслуТиваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ сСрии статСй, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π½Π° эти Ρ‚Π΅ΠΌΡ‹ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π° Ρ…Π°Π±Ρ€Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Gradle: Tasks Are Code, Gradle: Better Way To Build. А Π΅Ρ‰Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Gradle Π΅ΡΡ‚ΡŒ прСкрасно написанный Gradle User Guide. Π― ΠΆΠ΅ cΡ„ΠΎΠΊΡƒΡΠΈΡ€ΡƒΡŽ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° нСпосрСдствСнном Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ всС ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ описаны Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой самой Π·Π°Π΄Π°Ρ‡ΠΈ.
Π‘Π½Π°Ρ‡Π°Π»Π° опрСдСлимся с Ρ†Π΅Π»ΡŒΡŽ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅? А Ρ†Π΅Π»ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с нСсколькими модулями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собираСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Gradle. И Ρ‚Π°ΠΊ, приступим.

Π¨Π°Π³ 1. Установка gradle

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π΅Π½ΠΈΠ΅: Если Π²Ρ‹Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ просто β€œΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒβ€ с gradle, скачав Ρ„Π°ΠΉΠ»Ρ‹ для ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΈΠ»ΠΈ Π²Π°ΠΌ Π΄ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ исходники с Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ gradlew (gradlew.bat) Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ gradle Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Gradle ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, скачав послСднюю Π²Π΅Ρ€ΡΠΈΡŽ со страницы Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Gradle ΠΈΠ»ΠΈ воспользовавшись ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² вашСй любимой ОБ (ΠΏΡ€ΠΈΠΌ. Π― ставил Π½Π° Mac OS Ρ‡Π΅Ρ€Π΅Π· brew ΠΈ Π½Π° Debian Ρ‡Π΅Ρ€Π΅Π· apt-get ΠΈΠ· стандартных источников)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ шага:

Π¨Π°Π³ 2. ΠŸΡƒΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ (plugin), ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° (wrapper)

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π² Π΅Π΅ ΠΊΠΎΡ€Π½Π΅ сдСлаСм Ρ„Π°ΠΉΠ» build.gradle со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

Π˜Ρ‚ΠΎΠ³ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ шага (Π²Ρ‹Π²ΠΎΠ΄ сокращСн):

Π¨Π°Π³ 3. ЗаполняСм ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹

Для сравнСния Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π² maven:

Π˜Ρ‚ΠΎΠ³ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ шага:

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ скачиваСтся Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈ продСмонстрировано Π΅Π΅ использованиС.

Π¨Π°Π³ 4. ДостиТСниС Ρ†Π΅Π»ΠΈ

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ MiniM: Π’ gradle символ «:» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСсто «/» ΠΈ для Π±ΠΎΠ»Π΅Π΅ вСтвистой структуры ссылки Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ «:loaders:xml-loader»

/main_project/build.gradle (Π±Π»ΠΎΠΊ dependencies )

Π˜Ρ‚ΠΎΠ³ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ шага:

Π¨Π°Π³ 5 (Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ). Π£Π±ΠΈΡ€Π°Π΅ΠΌ мусор

Основная Ρ†Π΅Π»ΡŒ достигнута, Π½ΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ вопросы ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² build Ρ„Π°ΠΉΠ»Π°Ρ…, Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ настройкС gradle, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ дальшС. Для ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния, я ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с содСрТимым ссылок Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. А ΠΏΠΎΠΊΠ°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π² порядок наши build Ρ„Π°ΠΉΠ»Ρ‹, создав build.gradle Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² содСрТимоС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… build Ρ„Π°ΠΉΠ»ΠΎΠ²

На этом я Π·Π°ΠΊΠΎΠ½Ρ‡Ρƒ. НадСюсь, данная ΡΡ‚Π°Ρ‚ΡŒΡ Π²Ρ‹Π·Π²Π°Π»Π° интСрСс Ρƒ людСй, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с Gradle, ΠΈ ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ»Π° ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ использованию Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… этого инструмСнта.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ Gradle: Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ систСма сборки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Android Studio

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… для Android, хотя Π±Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ систСмС автоматичСской сборки Gradle. ΠŸΡ€ΠΈ этом, ΠΏΠΎ ΠΌΠΎΠΈΠΌ наблюдСниям, лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… эту систСму ΠΊΠΎΠ΄Π΅Ρ€ΠΎΠ² ΡƒΠ΄Π΅Π»ΡΡŽΡ‚ достаточно Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ слСдуСт ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ возмоТности :). Бамая частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: Β«Π”Π° Π»Π°Π΄Π½ΠΎ, это ΠΆ просто скрипт сборки, Ρƒ мСня Π΅ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ²Π°ΠΆΠ½Π΅Π΅Β».
А вСдь Π½Π° самом Π΄Π΅Π»Π΅ Gradle ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ для простой настройки сборки, Ρ‚Π°ΠΊ ΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ вСсьма нСстандартных Π·Π°Π΄Π°Ρ‡! Об этом ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ сСгодня.

Android Gradle plugin

Gradle сам ΠΏΠΎ сСбС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π±ΠΈΠ»Π΄ΠΈΡ‚ΡŒ Android-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² этом Π΅ΠΌΡƒ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ разрабатываСтся вмСстС с Android SDK. Если Ρ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π°Ρ‡Π°Π» ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Android, Ρ‚ΠΎ ΠΌΠΎΠ³ ΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π³Π»Π°Π²Π½ΠΎΠΌ сборочном скриптС build.gradle студия ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ добавляСт Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ этого ΠΏΠ»Π°Π³ΠΈΠ½Π°.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΡ‹ попытаСмся Π³Π»ΡƒΠ±ΠΆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ самого Gradle, я ΠΏΠΎΠΊΠ°ΠΆΡƒ Ρ‚Π΅Π±Π΅ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ этот ΠΏΠ»Π°Π³ΠΈΠ½ ΠΈ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Ρ‹ ΠΌΠΎΠ³ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ.

ДобавляСм свои поля Π² BuildConfig

BuildConfig β€” это автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ сборкС класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константы. Π­Ρ‚ΠΎΡ‚ класс гСнСрируСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля Π² Ρ‚Π²ΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ID прилоТСния, вСрсии, Ρ‚ΠΈΠΏΠ΅ сборки.

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ этого Ρ„Π°ΠΉΠ»Π° бСсполСзно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ всС Ρ€Π°Π²Π½ΠΎ пСрСзатрСтся Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ сборкС. Π—Π°Ρ‚ΠΎ Android-ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Ρ‚Π΅ поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ‹ скаТСшь.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” Ρ‚ΠΈΠΏ константы, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” имя, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, всС просто. Π—Π°ΠΌΠ΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля TIMEOUT вычисляСтся Π½Π° этапС сборки ΠΈ Π² BuildConfig ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ ΡƒΠΆΠ΅ ΠΊΠ°ΠΊ число 300 000. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ‹ моТСшь ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚, просто ΡΡΡ‹Π»Π°ΡΡΡŒ Π½Π° константы Π² BuildConfig.

ДобавляСм свои Π΄Π°Π½Π½Ρ‹Π΅ Π² рСсурсы

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ с BuildConfig, Π½ΠΎ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ значСния Π² Ρ„Π°ΠΉΠ» рСсурсов. Но Π·Π°Ρ‡Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ рСсурс ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°, Ссли ΠΏΡ€ΠΎΡ‰Π΅ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π² XML-Ρ„Π°ΠΉΠ»Π΅? ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² скриптС, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² случаС с BuildConfig.TIMEOUT, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСсурса ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ. НапримСр, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρƒ сборки:

Gradle создаст ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» generated.xml ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ содСрТания (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, разумССтся, с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΡƒΠ³Π»ΠΎΠ²Ρ‹ΠΌΠΈ скобочками):

И ΠΏΡƒΡΡ‚ΡŒ тСбя Π½Π΅ смущаСт, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ врСмя Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ String. К соТалСнию, Android SDK Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² рСсурсах long, Π° Π² 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ integer врСмя Π½Π΅ Π²Π»Π΅Π·Π΅Ρ‚.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ сборки

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ build types, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с сущСствСнными отличиями. Π­Ρ‚ΠΈ отличия ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ связаны с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ собираСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ для Ρ€Π΅Π»ΠΈΠ·Π°, с обфускациСй ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π±Π΅Π·, ΠΊΠ°ΠΊΠΈΠΌ сСртификатом ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ подписано.

Product flavors Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ build types ΠΈ вносят Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ гибкости Π² настройку сборки. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΈΡ…, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ, скаТСм Ρ‚Π°ΠΊ, Π½Π΅ глобально ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, β€” это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±Ρ€Π΅Π½Π΄ΠΈΠ½Π³ (ΠΈΠΊΠΎΠ½ΠΊΠΈ, Ρ†Π²Π΅Ρ‚Π°, тСксты), ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ (адрСс сСрвСра, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, trial- ΠΈΠ»ΠΈ pro-вСрсии).

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle Рис. 1. Π’Ρ‹Π±ΠΎΡ€ Build Variant Π² Android Studio

НастраиваСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Π‘ Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° gradle assembleTrialRelease собСрСт Ρ‚Π΅Π±Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с applicationId=»example.myawesomeapp.release» ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ вСрсии MyAwesomeApp-trial.

Заканчивая Ρ‚Π΅ΠΌΡƒ с Android-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ для Gradle, Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ возмоТностСй. Плагин постоянно развиваСтся ΠΈ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ. На сайтС tools.android.com Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄ ΠΏΠΎ Π΅Π³ΠΎ использованию.

Gradle DSL

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ конфигурация сборки Π² Gradle называСтся скриптом, ΠΈΠ· Ρ‡Π΅Π³ΠΎ состоит этот скрипт ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ выглядит Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ выглядит. Gradle часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ объСдинСниСм систСм сборки Ant ΠΈ Maven.

Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Gradle, ΠΊΠ°ΠΊ ΠΈ Maven, обСспСчиваСт Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ сборкС, ΠΊΠΎΠ³Π΄Π° программист лишь ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ значСния ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π° систСма сама Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всю ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ИмСнно этим ΠΌΡ‹ занимались Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ части.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Gradle, ΠΊΠ°ΠΊ ΠΈ Ant, ΡƒΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½ΠΎ ΠΏΠΈΡˆΡƒΡ‚ΡΡ ΠΎΠ½ΠΈ Π½Π΅ Π² XML-Ρ„Π°ΠΉΠ»Π΅, Π° ΡƒΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Gradle DSL (domain-specific programming language), написанном Π½Π° Groovy. Π’ ΠΌΠΈΡ€Π΅ Gradle эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Tasks (Π·Π°Π΄Π°Ρ‡ΠΈ). Π—Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ зависимыми ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ ΠΈΡ… выполнСния. По сути, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΈ установлСнныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π΅ΡΡ‚ΡŒ скрипт сборки прилоТСния.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle Рис. 2. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π°Π΄Π°Ρ‡ Π² Android-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅

Xakep #212. Π‘Π΅ΠΊΡ€Π΅Ρ‚Ρ‹ Π΄Π°Ρ€ΠΊΠ½Π΅Ρ‚Π°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ напишСм Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, Π΄Π°Π²Π°ΠΉ я Ρ‚Π΅Π±Π΅ ΠΏΠΎΠΊΠ°ΠΆΡƒ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² манипулирования Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: добавляСм зависимости ΠΊ Π·Π°Π΄Π°Ρ‡Π΅

ΠœΡ‹ написали Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ слова Hello ΠΈ world. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ doLast <. >ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для краткости записи. ПослСдняя Π·Π°Π΄Π°Ρ‡Π° greetings ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС зависимости массив Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. Если Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅, Ρ‚ΠΎ ΠΎΠ½Π° ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ запустит всС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ установки зависимостСй:

Π­Ρ‚ΠΎΡ‚ способ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Gradle β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: динамичСскоС созданиС Π·Π°Π΄Π°Ρ‡

Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Android-ΠΏΠ»Π°Π³ΠΈΠ½ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ΄ Ρ‚Π²ΠΎΠΈ build types ΠΈ product flavors, Ρ‚Ρ‹ сам моТСшь Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’Π°ΠΊΠΎΠΉ скрипт создаст Ρ‚Π΅Π±Π΅ ΠΏΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ task0, tasl1 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

ОK, Π±Π»ΠΈΠΆΠ΅ ΠΊ Π΄Π΅Π»Ρƒ, Π΄Π°Π²Π°ΠΉ напишСм Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅. МногиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ состоят Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ основного модуля app, Π½ΠΎ ΠΈ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свой скрипт build.gradle со своими настройками. ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Android SDK становится ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· скриптов ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½ΠΈΡ… compileSdkVersion, buildToolsVersion, targetSdkVersion. Π—Π°Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ, которая сдСлаСт это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠžΡ‚ΠΊΡ€ΠΎΠΉ скрипт build.gradle Π² ΠΊΠΎΡ€Π½Π΅ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΉΠ΄ΠΈ Π² Π½Π΅ΠΌ ΡΠ΅ΠΊΡ†ΠΈΡŽ allprojects <. >ΠΈ добавь Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π° послоТнСС: Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ подстановку вСрсии прилоТСния (versionCode ΠΈ versionName). Π”Π°Π²Π°ΠΉ прСдставим, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Git, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· помСчаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚Π΅Π³ΠΎΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ release2.3.4. Π’ΠΎΠ³Π΄Π° Π² качСствС versionName ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒ имя самого свСТСго Ρ‚Π΅Π³Π°, Π° versionCode Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ количСству этих Ρ‚Π΅Π³ΠΎΠ². Π’ качСствС бонуса сгСнСрируСм Ρ„Π°ΠΉΠ» с историСй Ρ€Π΅Π»ΠΈΠ·ΠΎΠ².

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Ρ‹Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ с Git всю Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

РСальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ зависит, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π»Π΅ΠΆΠΈΡ‚ Π² Git ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сСкции android, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ значСния versionCode ΠΈ versionName:

Автоподстановку вСрсии ΠΌΡ‹ настроили. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ список Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Π² Ρ„Π°ΠΉΠ». Π‘Π΄Π΅Π»Π°Π΅ΠΌ для этого Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ:

Π’Π°ΠΊ ΠΊΠ°ΠΊ Groovy β€” это Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Java, Ρƒ тСбя Π² распоряТСнии вСсь стандартный Java API. Π—Π΄Π΅ΡΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΌ пригодился стандартный Java-класс File. Π§Ρ‚ΠΎΠ±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π½Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° вмСстС с Π±ΠΈΠ»Π΄ΠΎΠΌ, ΠΏΠΎΠ΄Ρ†Π΅ΠΏΠΈΠΌ Π½Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ· ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ preBuild:

Π˜Ρ‚ΠΎΠ³ΠΎ

ΠœΡ‹ посмотрСли Π½Π° ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ возмоТности Android-ΠΏΠ»Π°Π³ΠΈΠ½Π° для Gradle, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ поковыряли Gradle API, ΠΏΠΎΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ свои Π·Π°Π΄Π°Ρ‡ΠΈ. РазумССтся, всС это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…ΡƒΡˆΠΊΠ° айсбСрга. Π’ΠΎΠΊΡ€ΡƒΠ³ Gradle ΡƒΠΆΠ΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ большоС ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ, ΠΈ ΠΎΠ½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΈ создаСт свои ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹: для дСплоя, для тСстирования, для статистики ΠΈ ΠΊΡƒΡ‡Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π²ΠΎΡŽ Тизнь Π»ΡƒΡ‡ΡˆΠ΅. А Ссли Ρ‚Ρ‹ Π½Π΅ найдСшь Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ Ρ‚Ρ‹ смоТСшь Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΏΠ»Π°Π³ΠΈΠ½ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡Ρƒ. УспСхов!

Π’ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ устройствС Gradle (Π½Π° английском):
Gradle under the hood (Dawid Kublik)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Gradle β€” ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство

Β«Gradle β€” систСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌΒ»

Ant ΠΈ Maven достигли Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… успСхов Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ JAVA. Ant Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ инструмСнтом сборки, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ Π² 2000 Π³ΠΎΠ΄Ρƒ, ΠΈ ΠΎΠ½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π½Π° основС ΠΈΠ΄Π΅ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования. ПозТС ΠΎΠ½ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ благодаря возмоТности ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями ΠΏΠΎ сСти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Apache-IVY. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ нСдостатком являСтся XML ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для написания сцСнариСв сборки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ иСрархичСская структура Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования, Π° XML ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ нСуправляСмо большим.

Maven прСдставлСн Π² 2004 Π³ΠΎΠ΄Ρƒ. Он Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ANT. Он мСняСт свою структуру ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ XML для написания спСцификаций сборки. Maven опираСтся Π½Π° соглашСния ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ зависимости ΠΏΠΎ сСти. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством maven являСтся Π΅Π³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ». БлСдуя ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ. Π­Ρ‚ΠΎ связано с Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ. Maven Ρ‚Π°ΠΊΠΆΠ΅ сталкиваСтся с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ зависимостями. Он ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈ слоТныС настраиваСмыС сцСнарии сборки Π½Π° самом Π΄Π΅Π»Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² maven, Ρ‡Π΅ΠΌ Π² ANT.

НаконСц, Π² 2012 Π³ΠΎΠ΄Ρƒ появился Gradle. Gradle ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ эффСктивными функциями ΠΎΠ±ΠΎΠΈΡ… инструмСнтов.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Gradle

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Gradle.

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ сборки ΠΈ сборка ΠΏΠΎ соглашСнию β€” Gradle доступСн с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком (DSL) Π½Π° основС языка Groovy. Gradle прСдоставляСт элСмСнты Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка. Π­Ρ‚ΠΈ элСмСнты Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ сборки ΠΏΠΎ соглашСнию для Java, Groovy, OSGI, Web ΠΈ Scala.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ свою сборку β€” Gradle Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ позволяСт Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ проСктирования ΠΊ вашСй сборкС. Π­Ρ‚ΠΎ даст Π²Π°ΠΌ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½ΡƒΡŽ структуру для сборки, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ смоТСтС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ, ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ сборку.

Π“Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ API β€” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот API, ΠΎΠ½ позволяСт Π²Π°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Gradle β€” Gradle ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ свою ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΎΡ‚ простых сборок ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… сборок прСдприятия.

ΠœΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Π΅ сборки β€” Gradle ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Π΅ сборки ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ частичныС сборки. Если Π²Ρ‹ строитС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Gradle позаботится ΠΎ создании всСх ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ зависит.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы управлСния вашими сборками β€” Gradle ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стратСгии для управлСния вашими зависимостями.

Gradle β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ инструмСнт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ сборки β€” Gradle ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ поддСрТиваСтся для Π·Π°Π΄Π°Ρ‡ ANT, инфраструктура рСпозитория Maven ΠΈ lvy для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ получСния зависимостСй. Gradle Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ для прСвращСния Maven pom.xml Π² скрипт Gradle.

Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ β€” Gradle ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ любой вашСй структурС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ свою сборку Gradle Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠ΅, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΆΠΈΠ²ΠΎΠΉ скрипт.

Gradle Wrapper β€” Gradle Wrapper позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сборки Gradle Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Π³Π΄Π΅ Gradle Π½Π΅ установлСн. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ сСрвСров.

БСсплатный ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ β€” Gradle β€” это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache Software License (ASL).

Groovy β€” скрипт сборки Gradle написан Π½Π° Groovy. Π’Π΅ΡΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ Gradle ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° использованиС Π² качСствС языка, Π° Π½Π΅ ТСсткой структуры. А Groovy позволяСт Π²Π°ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный скрипт с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ абстракциями. Π’Π΅ΡΡŒ API Gradle ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π½Π° языкС Groovy.

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ сборки ΠΈ сборка ΠΏΠΎ соглашСнию β€” Gradle доступСн с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком (DSL) Π½Π° основС языка Groovy. Gradle прСдоставляСт элСмСнты Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка. Π­Ρ‚ΠΈ элСмСнты Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ сборки ΠΏΠΎ соглашСнию для Java, Groovy, OSGI, Web ΠΈ Scala.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ свою сборку β€” Gradle Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ позволяСт Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ проСктирования ΠΊ вашСй сборкС. Π­Ρ‚ΠΎ даст Π²Π°ΠΌ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½ΡƒΡŽ структуру для сборки, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ смоТСтС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ, ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ сборку.

Π“Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ API β€” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот API, ΠΎΠ½ позволяСт Π²Π°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Gradle β€” Gradle ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ свою ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΎΡ‚ простых сборок ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… сборок прСдприятия.

ΠœΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Π΅ сборки β€” Gradle ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Π΅ сборки ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ частичныС сборки. Если Π²Ρ‹ строитС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Gradle позаботится ΠΎ создании всСх ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ зависит.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы управлСния вашими сборками β€” Gradle ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стратСгии для управлСния вашими зависимостями.

Gradle β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ инструмСнт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ сборки β€” Gradle ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ поддСрТиваСтся для Π·Π°Π΄Π°Ρ‡ ANT, инфраструктура рСпозитория Maven ΠΈ lvy для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ получСния зависимостСй. Gradle Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ для прСвращСния Maven pom.xml Π² скрипт Gradle.

Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ β€” Gradle ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ любой вашСй структурС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ свою сборку Gradle Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠ΅, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΆΠΈΠ²ΠΎΠΉ скрипт.

Gradle Wrapper β€” Gradle Wrapper позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сборки Gradle Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Π³Π΄Π΅ Gradle Π½Π΅ установлСн. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ сСрвСров.

БСсплатный ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ β€” Gradle β€” это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache Software License (ASL).

Groovy β€” скрипт сборки Gradle написан Π½Π° Groovy. Π’Π΅ΡΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ Gradle ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° использованиС Π² качСствС языка, Π° Π½Π΅ ТСсткой структуры. А Groovy позволяСт Π²Π°ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный скрипт с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ абстракциями. Π’Π΅ΡΡŒ API Gradle ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π½Π° языкС Groovy.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Groovy?

ΠŸΠΎΠ»Π½Ρ‹ΠΉ API Gradle Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с использованиСм языка Groovy. Π­Ρ‚ΠΎ прСимущСство Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ DSL Π½Π°Π΄ XML. Gradle β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для сборки; основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Java, ΠΈ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сборка Π±Ρ‹Π»Π° максимально ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ для всСх Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π’Π°ΠΊΠΈΠ΅ языки, ΠΊΠ°ΠΊ Python, Groovy ΠΈΠ»ΠΈ Ruby, Π»ΡƒΡ‡ΡˆΠ΅ подходят для сборки Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Groovy Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½, Ρ‚Π°ΠΊ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ для людСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Java. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис Groovy Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Java. Groovy ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС.

Gradle β€” Установка

Gradle β€” это инструмСнт для сборки, основанный Π½Π° Java. Π•ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ установлСны ΠΏΠ΅Ρ€Π΅Π΄ установкой Ρ€Π°ΠΌΡ‹ Gradle.

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΡ‹Π»ΠΊΠΈ

JDK ΠΈ Groovy ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ условиями для установки Gradle.

Gradle Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ JDK вСрсии 6 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ вСрсии для установки Π² вашСй систСмС. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ JDK, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ установлСны ΠΈ установлСны Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния JAVA_HOME.

Gradle содСрТит ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Groovy, поэтому Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Groovy. Если ΠΎΠ½ установлСн, Gradle ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ.

Gradle Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ JDK вСрсии 6 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ вСрсии для установки Π² вашСй систСмС. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ JDK, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ установлСны ΠΈ установлСны Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния JAVA_HOME.

Gradle содСрТит ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Groovy, поэтому Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Groovy. Если ΠΎΠ½ установлСн, Gradle ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ инструкции ΠΏΠΎ установкС Gradle Π² вашСй систСмС.

Π¨Π°Π³ 1 β€” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ установку JAVA

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Java Software Development Kit (SDK) Π² вашСй систСмС. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² этом, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Java –version Π½Π° любой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.

Π’ Π²ΠΈΠ½Π΄Π΅ β€”

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ установку Java. Π― установил JDK 1.8 Π² ΠΌΠΎΠ΅ΠΉ систСмС.

Π’ Linux β€”

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ установку Java. Π― установил JDK 1.8 Π² ΠΌΠΎΠ΅ΠΉ систСмС.

ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ этого руководства установили Java SDK вСрсии 1.8.0_66 Π² своСй систСмС.

Π¨Π°Π³ 2 β€” Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» сборки Gradle

Π¨Π°Π³ 3 β€” Настройка срСды для Gradle

Π­Ρ‚ΠΎΡ‚ шаг зависит ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π’ Π²ΠΈΠ½Π΄Π΅ β€”

Π˜Π·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ zip-Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ gradle-2.11-all.zip ΠΈ скопируйтС дистрибутивныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Downloads \ gradle-2.11 \ Π² C: \ gradle \ location.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма сборки gradle

Π’ Linux β€”

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ дистрибутивныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Downloads / gradle-2.11 / Π² / opt / gradle / location. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»

Π¨Π°Π³ 4: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ установку Gradle

Π’ ΠΎΠΊΠ½Π°Ρ…:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

Π’Ρ‹Π²ΠΎΠ΄: Ρ‚Π°ΠΌ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ Gradle.

Π’ Linux:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅.

Π’Ρ‹Π²ΠΎΠ΄: Ρ‚Π°ΠΌ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ Gradle.

Gradle β€” Build Script

Gradle ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Groovy для написания скриптов.

НаписаниС сцСнария сборки

Gradle прСдоставляСт ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык (DSL) для описания сборок. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ язык Groovy, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ описаниС сборки. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сцСнарий сборки Gradle кодируСтся с использованиСм UTF-8, сохраняСтся Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ называСтся build.gradle.

build.gradle

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Если Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ†Π΅Π»ΠΈ ANT, Ρ‚ΠΎ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ β€” Π·Π°Π΄Π°Ρ‡Π° Gradle эквивалСнтна Ρ†Π΅Π»ΠΈ ANT.

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

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Grade Π² основном использовал Π΄Π²Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сцСнария.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сцСнарий описываСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’ΠΎ врСмя выполнСния этот сцСнарий настраиваСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойства Π² вашСм скриптС сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” Gradle взят ΠΊΠΎΠ΄ сцСнария Π² классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс сцСнариСв, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСтся. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ интСрфСйсом скрипта, доступны Π² вашСм скриптС.

Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉΠ½Π°Π·Π²Π°Π½ΠΈΠ΅Π’ΠΈΠΏΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
1проСктпроСктЭкзСмпляр ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
2названиСстрокаНазваниС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
3Π΄ΠΎΡ€ΠΎΠΆΠΊΠ°ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
4ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΡ‚Ρ€ΠΎΠΊΠ°ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
5ProjectDirΡ„Π°ΠΉΠ»ΠšΠ°Ρ‚Π°Π»ΠΎΠ³, содСрТащий скрипт сборки.
6buildDirΡ„Π°ΠΉΠ»ProjectDir / сборки
7Π³Ρ€ΡƒΠΏΠΏΠ°ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΠ΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅
8Π²Π΅Ρ€ΡΠΈΡΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΠ΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅
9ΠΌΡƒΡ€Π°Π²Π΅ΠΉAntBuilderЭкзСмпляр AntBuilder

Groovy ΠžΡΠ½ΠΎΠ²Ρ‹

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ сборки Gradle ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Groovy API. Π’ качСствС стартапа взглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСявного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ($ it) 4 Ρ€Π°Π·Π°.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Groovy язык прСдоставляСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π½ΠΈΠΆΠ΅.

Groovy JDK ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Groovy добавляСт мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² стандартныС классы Java. НапримСр, Iterable API ΠΈΠ· JDK Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ each (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ элСмСнтам Iterable Interface.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

БрСдства доступа ΠΊ нСдвиТимости

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

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ скобки ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Groovy содСрТит ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², которая являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ скобкой для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π­Ρ‚Π° функция Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ сцСнариям Gradle.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис. Π­Ρ‚ΠΎ опрСдСляСт ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ systemProperty тСстового ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠ°ΠΊ послСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Gradle DSL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ замыкания Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах. Если послСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ послС Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° опрСдСляСт синтаксис, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Closures Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° repositories ().

Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Gradle автоматичСски добавляСт Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² сцСнарии Gradle. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ спискС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для скрипта Gradle.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ стандартныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² скрипт Gradle.

Gradle β€” Π—Π°Π΄Π°Ρ‡ΠΈ

Π‘ΠΊΡ€ΠΈΠΏΡ‚ сборки Gradle описываСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π—Π°Π΄Π°Ρ‡Π° β€” это Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ выполняСт сборка. Π—Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ компиляция Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… классов, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² классов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, созданиС JAR, гСнСрация Javadoc ΠΈΠ»ΠΈ публикация Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… достиТСний Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π’ этой Π³Π»Π°Π²Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Π΄Π°Ρ‡Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π΅Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это Ρ‚Π°ΠΌ, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

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

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строки для ΠΈΠΌΠ΅Π½ Π·Π°Π΄Π°Ρ‡. ВзглянитС Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΏΡ€ΠΈΠ²Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ String ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‡Ρƒ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис для опрСдСлСния Π·Π°Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ create () для опрСдСлСния Π·Π°Π΄Π°Ρ‡ΠΈ. ВзглянитС Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΏΡ€ΠΈΠ²Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Поиск Π·Π°Π΄Π°Ρ‡

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

ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обращаСтся ΠΊ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΊΠ°ΠΊ ΠΊ свойствам.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС свойства Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π·Π°Π΄Π°Ρ‡.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Он выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ скрипт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это, Π³Π΄Π΅ хранится Ρ„Π°ΠΉΠ» build.gradle.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΡƒΡ‚ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π°Π΄Π°Ρ‡ΠΈ. Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ getByPath () с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ, Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ, Π»ΠΈΠ±ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

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