Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ gradle

Gradle: 5 полСзностСй для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€! Настало врСмя, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Β«new build systemΒ» Gradle являСтся стандартом отрасли Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ сдСлан Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ просто ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π΅ испытаСт трудностСй, Π΄Π°ΠΆΠ΅ Π½Π΅ зная, ΠΊΠ°ΠΊ ΠΎΠ½ устроСн, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π² Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ β€” Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 5 ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° StackOverflow, ΠΏΡƒΡ‚Π΅ΠΌ копирования «магичСского ΠΊΠΎΠ΄Π°Β» Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ·-Π·Π° этого Π½Π΅ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‚ Gradle Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Тизнь.

1. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ быстродСйствиС

ВрСмя сборки Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ВСсты ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ каТдая ΠΈΠ· вСрсий, начиная с Gradle 2.0, ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. Однако Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΠ»ΠΈΡΡŒ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π½ΡŒΠΊΠΎ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π°Π΄ быстродСйствиСм Π² Gradle 2.4.

1. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Gradle 2.4+

3. ПослС Ρ‡Π΅Π³ΠΎ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³-Π΄Ρ€ΡƒΠ³Π° ΠΊΠ°ΠΊ зависимости, Ρ‚Π΅ΠΌ самым создавая пСрСкрёстныС ссылки, ΠΌΠΎΠΆΠ½ΠΎ смСло Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ускорит ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сборки Π΄ΠΎ

Если Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‚ΠΎ стоит Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ нСобходимости:

Π§Π΅ΠΌ большС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Ρ‚Π΅ΠΌ большСС Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ ускорСниС, Π½Π° ΠΌΠ°Π»ΠΎΠΌ количСствС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ.

2. Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌ BuildConfig

Как извСстно, Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сборки (build.gradle) прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Product Flavors ΠΈ Build Types, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ массу Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² для раздСлСния сборок ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. НапримСр, β€œΠ‘Π±ΠΎΡ€ΠΊΠ° с тСстовым сСрвСром”, β€œΠ‘Π±ΠΎΡ€ΠΊΠ° с Π±ΠΎΠ΅Π²Ρ‹ΠΌ сСрвСром”, ”Бборка с логированиСм” ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. ИспользованиС ΠΈΡ… для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ BuildConfig (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ гСнСрируСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ сборкС) Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. НапримСр, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ back-end-сСрвСром, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅; Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΎΠ³ΠΈ.

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ВрСмя Π½Π΅ стоит Π½Π° мСстС, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ инструмСнты, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Android ΠΈΠΌΠ΅ΡŽΡ‚ свойство ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ. И Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ развиваСтся, Ρ‚ΠΎ приходится ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ build.gradle ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ compileSdkVersion, buildToolsVersion, вСрсии Android Support Library ΠΈ Google Play Services. А Ссли Ρƒ нас Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ части Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Google Play Services, это Π²Π΅Π΄Π΅Ρ‚ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству мСст ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ врСмя ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ использованиС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Ρ‡Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π˜Π·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ gradle-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π’ самый Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ build.gradle добавляСм

4. Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Crashlytics

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Release-сборках, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ выпускаСм для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ/тСстирования. Debug сборки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для сСбя, ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹ Π΅ΠΌΡƒ Π² Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π΅, Π·Π½Π°Ρ‡ΠΈΡ‚, Π΄Π°Π±Ρ‹ Π½Π΅ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ список Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΉ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Crashlytics для Debug-сборок.
Π—Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ банальной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° сборки:

Но это Π½Π΅ самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‚.ΠΊ. ΠΏΠ»Π°Π³ΠΈΠ½ Fabric Gradle всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ встраиваниС Π² рСсурсы прилоТСния ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ id сборки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Crashlytics back-end Π·Π°Ρ‚Π΅ΠΌ понял, какая сборка прислала Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ врСмя сборки debug-вСрсии прилоТСния.

ПослС этого debug-сборки Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ id, ΠΈ процСсс сборки ускорится, Π½ΠΎ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ попытаСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΉ сборкС Crashlytics, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΏΠ°Π΄Ρ‘Ρ‚ с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ:

Π’.Π΅. ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Ρ‚ΠΈΠΏ сборки ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Crashlytics Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Release сборок ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΌ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ Crashlytics Π½Π° сайтС Fabric:

5. УмСньшаСм количСство ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ рСсурсов

Π’ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π½Π°ΠΌΠΈ прилоТСниях ΠΌΡ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Android Support Library, Google Play Services ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. МногиС ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ рСсурсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½Π°ΡˆΠΈΡ… прилоТСниях Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. НапримСр, Google Play Services поставляСтся с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ Π½Π° языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚. ВСроятно, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ mdpi ΠΈΠ»ΠΈ tvdpi-Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² своём ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Благодаря Android Gradle Plugin ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ языки ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ вСс прилоТСния.

ΠŸΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ multi-APK, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ³Π΄Π° появился Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Splits.

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

Gradle Π² сравнСнии с Maven: ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, сборка ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ gradle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ gradle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ gradle. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ gradle

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 Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΈΡ… всС Π² кэш Π½Π° вашСй локальной машинС. Π₯отя Maven прСимущСствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Java, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для Scala, Ruby ΠΈ C#, Π° Ρ‚Π°ΠΊΠΆΠ΅ для мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ… языков.

Gradle Π² сравнСнии с Maven

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

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

Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Π°Ρ компиляция для классов Java

ИзбСганиС компиляции для Java

ИспользованиС API для ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡

Π”Π΅ΠΌΠΎΠ½ компилятора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ.

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

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

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

ИспользованиС ΠΏΡ€Π°Π²ΠΈΠ» подстановки для совмСстимых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

ИспользованиС ΠΏΡ€Π°Π²ΠΈΠ» ReplacedBy

Π‘ΠΎΠ»Π΅Π΅ качСствСнноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ динамичСской Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… зависимостСй Π½Π° внСшниС ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Gradle Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с составными сборками, позволяя Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ постоянными составными сборками, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сборки ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΡΡ‚Π°Π²Π½ΡƒΡŽ сборку Π² Eclipse ΠΈΠ»ΠΈ IntelliJ IDEA.

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

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

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

Π’ΠΎΡ‚ ΠΊΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для достиТСния этой Ρ†Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Maven:

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Maven, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΡƒΡŽ JAR-Ρ„Π°ΠΉΠ», Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

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

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ для достиТСния этой Ρ†Π΅Π»ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

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

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

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

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

Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сборки. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 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

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

Если Π²Π°ΠΌ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ обучСния ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ курса β€” ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° дСнь ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Π²Π΅Ρ€Π΅ΠΉ ΠΎΠ½Π»Π°ΠΉΠ½. РСгистрация здСсь.

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

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ 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)

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

Π‘Π±ΠΎΡ€ΠΊΠ° Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с использованиСм Gradle

Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠΊ освСщаСт созданиС Π²Π°ΠΌΠΈ простого Java-прилоТСния с использованиСм Gradle.

Π§Ρ‚ΠΎ Π²Ρ‹ создадитС

Π’Ρ‹ создадитС простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ собСрСтС Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Gradle.

Π§Ρ‚ΠΎ Π²Π°ΠΌ потрСбуСтся

Как ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ этот ΡƒΡ€ΠΎΠΊ

Как ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΏΠΎ Spring, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с нуля ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹. Π’ любом случаС, Π²Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ с нуля, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Для Π½Π°Ρ‡Π°Π»Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ Gradle’ΠΎΠΌ. Π’.ΠΊ. ΡƒΡ€ΠΎΠΊ посвящСн Gradle, сдСлаСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ максимально простым, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ структуры ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

Установка Gradle

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ с Gradle, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ установит сам Gradle.

Gradle ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, скачав zip-Ρ„Π°ΠΉΠ» с gradle.org/downloads. НСобходимы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΡ‰ΠΈΡ‚Π΅ ссылку Π½Π° Π°Ρ€Ρ…ΠΈΠ² с ΠΈΠΌΠ΅Π½Π΅ΠΌ gradle-version-bin.zip. (Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ gradle-version-all.zip, Ρ‚Π΅ΠΌ самым ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ исходники, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.)

РаспакуйтС Π°Ρ€Ρ…ΠΈΠ² ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ bin Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния path.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ установки Gradle, запуститС Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

Если всё Π±Ρ‹Π»ΠΎ сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ установлСнный Gradle.

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Gradle

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Gradle установлСн, посмотрим, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ создадитС build.gradle для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ доступны Π·Π°Π΄Π°Ρ‡ΠΈ:

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ список доступных Π·Π°Π΄Π°Ρ‡. Если Π²Ρ‹ запуститС Gradle Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ Π΅Ρ‰Ρ‘ Ρ„Π°ΠΉΠ»Π° build.gradle, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ нСсколько самых элСмСнтарных Π·Π°Π΄Π°Ρ‡:

Говоря ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΡƒΡ€ΠΎΠΊΠ° Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сборки Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π‘Π±ΠΎΡ€ΠΊΠ° Java ΠΊΠΎΠ΄Π°

НачнСм с простого, создадим ΠΎΡ‡Π΅Π½ΡŒ простой build.gradle Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°(Ρ‚Π°ΠΌ, Π³Π΄Π΅ src), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строчку:

Π­Ρ‚Π° СдинствСнная строчка Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сборки приносит Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ. ЗапуститС gradle tasks снова ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² спискС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π·Π°Π΄Π°Ρ‡ΠΈ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, создания JavaDoc ΠΈ запуска тСстов.

Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ gradle build достаточно часто. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚, тСстируСт ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π² JAR-Ρ„Π°ΠΉΠ». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π§Π΅Ρ€Π΅Π· нСсколько сСкунд, «BUILD SUCCESSFUL» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сборка ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ зависимостСй ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, поэтому Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² ΠΏΠ°ΠΏΠΊΠ΅ dependency_cache.

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ тСстов для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’.ΠΊ. ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠΊΠ° Π½Π΅ содСрТит тСстов, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌ нСинтСрСсСн.

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ JAR-Ρ„Π°ΠΉΠ» с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ дальнСйшСм, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ имя JAR-Ρ„Π°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ.

ОбъявлСниС зависимостСй

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ «Hello World» ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ ΠΈ Π½Π΅ зависит ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Однако, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ зависит ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ распостранСнного ΠΈ/ΠΈΠ»ΠΈ слоТного Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ «Hello World!» Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π»ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя. Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· стандартных(native) Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ интСрСсными способами, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Joda Time Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π—Π΄Π΅ΡΡŒ HelloWorld ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Joda Time LocalTime класс для получСния ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Если Π±Ρ‹ Π²Ρ‹ запустили gradle build для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сСйчас, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ ΠΎΡˆΠΈΠ±ΠΊΡƒ сборки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ объявили Joda Time ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² сборкС.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ источники сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ:

Π‘Π»ΠΎΠΊ repositories ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сборка Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ зависимости ΠΈΠ· Maven Central рСпозитория. Gradle опираСтся Π² основном Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ соглашСния ΠΈ возмоТности, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² инструмСнтС сборки Maven, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ использованиС Maven Central ΠΊΠ°ΠΊ источник Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ зависимостСй.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΡƒ сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, объявим ΠΈΡ…:

Π’ Π±Π»ΠΎΠΊΠ΅ dependencies Π²Ρ‹ описываСтС Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Joda Time. Π’ частности, Π²Ρ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚Π΅(Ρ‡ΠΈΡ‚Π°Π΅ΠΌ справа Π½Π° Π»Π΅Π²ΠΎ) Π²Π΅Ρ€ΡΠΈΡŽ 2.2 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ joda-time Π² joda-time Π³Ρ€ΡƒΠΏΠΏΠ΅.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ имя для нашСго JAR Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°.

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с Gradle Wrapper

Gradle Wrapper являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ способом для Π½Π°Ρ‡Π°Π»Π° Gradle сборки. Он содСрТит bat-скрипты для Windows ΠΈ shell-скрипты для OS X ΠΈ Linux. Π­Ρ‚ΠΈ скрипты ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сборку с Gradle Π±Π΅Π· нСобходимости установки самого Gradle Π² Π²Π°ΡˆΡƒ систСму. Π§Ρ‚ΠΎΠ±Ρ‹ это стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ Π² ΠΊΠΎΠ½Π΅Ρ† вашСго build.gradle :

ЗапуститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ wrapper-скриптов:

Gradle Wrapper Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступСн Π²Π°ΠΌ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² Π²Π°ΡˆΡƒ систСму контроля вСрсий ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ, ΠΊΡ‚ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, смоТСт Π΅Π³ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом. Gradle Wrapper ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Ρ€Π°Π²Π½Π΅ с установлСнным Gradle. Pfgecnbnt wrapper-скрипт для выполнСния Π·Π°Π΄ΠΈΡ‡ΠΈ сборки Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ Π΄Π΅Π»Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅:

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

На Π΄Π°Π½Π½ΠΎΠΌ этапС Ρƒ вас Π΅ΡΡ‚ΡŒ собранный ваш ΠΊΠΎΠ΄. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚Π΅:

Π­Ρ‚ΠΎ содСрТимоС ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ² классов. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅, Ссли Π²Ρ‹ ΠΈ объявили joda-time ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚. И JAR-Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ нСспособСн ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ.

Π—Π°Ρ‚Π΅ΠΌ просто запуститС вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅!

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ зависимостСй. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π±Ρ‹ ΠΌΡ‹ собирали WAR-Ρ„Π°ΠΉΠ», ΠΎΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ сторонних зависимостСй, ΠΌΡ‹ Π±Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WAR ΠΏΠ»Π°Π³ΠΈΠ½. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Spring Boot ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исполняСмый JAR-Ρ„Π°ΠΉΠ», Ρ‚ΠΎΠ³Π΄Π° Π²Π°ΠΌ пригодится spring-boot-gradle-plugin. На Π΄Π°Π½Π½ΠΎΠΌ этапС, gradle нСдостаточно Π·Π½Π°Π΅Ρ‚ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ систСмС. Но этого достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с gradle.

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС, Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΉ build.gradle Ρ„Π°ΠΉΠ»:

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! Π’Ρ‹ создали простой, Π½ΠΎ эффСктивный Ρ„Π°ΠΉΠ» сборки Gradle для сборки Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

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

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

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