ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ 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»
ΠΡΠΎΠ³ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠ³ΠΎ ΡΠ°Π³Π°:
Π¨Π°Π³ 5 (Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ). Π£Π±ΠΈΡΠ°Π΅ΠΌ ΠΌΡΡΠΎΡ
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ°, Π½ΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΎ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² build ΡΠ°ΠΉΠ»Π°Ρ , Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ gradle, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ·ΡΡΠ°ΡΡ Π΄Π°Π»ΡΡΠ΅. ΠΠ»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ, Ρ ΡΠΎΠ²Π΅ΡΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΡΡΡΠ»ΠΎΠΊ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ. Π ΠΏΠΎΠΊΠ°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π² ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π½Π°ΡΠΈ build ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ·Π΄Π°Π² build.gradle Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ build ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ° ΡΡΠΎΠΌ Ρ Π·Π°ΠΊΠΎΠ½ΡΡ. ΠΠ°Π΄Π΅ΡΡΡ, Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ Π²ΡΠ·Π²Π°Π»Π° ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Ρ Π»ΡΠ΄Π΅ΠΉ, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡ Ρ Gradle, ΠΈ ΠΏΠΎΠ±ΡΠ΄ΠΈΠ»Π° ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΌΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°.
ΠΠ·ΡΡΠ°Π΅ΠΌ Gradle: ΡΡΠΎ ΡΠΌΠ΅Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Android Studio
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ
Π΄Π»Ρ 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-Π²Π΅ΡΡΠΈΠΈ).
Π ΠΈΡ. 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 (Π·Π°Π΄Π°ΡΠΈ). ΠΠ°Π΄Π°ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ Π·Π°Π΄Π°Ρ ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΡΠΎΠΈΡΡ Π³ΡΠ°Ρ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎ ΡΡΡΠΈ, ΡΠ΅ΠΏΠΎΡΠΊΠ° Π·Π°Π΄Π°Ρ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΠΈΡ. 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.
Π 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 | ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΡΡΡΠΎΠΊΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°. |
5 | ProjectDir | ΡΠ°ΠΉΠ» | ΠΠ°ΡΠ°Π»ΠΎΠ³, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ. |
6 | buildDir | ΡΠ°ΠΉΠ» | 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 () Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π·Π°Π΄Π°ΡΠΈ, Π»ΠΈΠ±ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ, Π»ΠΈΠ±ΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ.