рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдХреЗрд╡рд▓ рддрднреА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ рдХреБрдЫ рдЕрдЪрд╛рдирдХ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ - рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ "рдУрд╡рд░рд╡рд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдЧреНрд░рд╣рд┐рдд" рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреБрднрд╡ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдордВрддреНрд░реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдЬреЛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреА рд╕рдордЭ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
android { compileSdkVersion 28 defaultConfig { applicationId "com.habr.hello" minSdkVersion 20 targetSdkVersion 28 } buildTypes { release { minifyEnabled false } } }
рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдКрдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреНрдпрд╛ рд╣реИ - рдпреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдирд┐рдЬреА рд╡рд┐рд╡рд░рдг рд╣реИрдВред рдХреБрдЫ рдФрд░ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ - рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕рдХреА рд╕рдордЭред рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдЗрдЯреЛрдВ / рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди / рдкрд╛рд▓рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ рдЗрди рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдкрд░ рдмрд┐рдЦрд░реА рд╣реБрдИ рд╣реИ - рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЬреНрдЮрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рднреВрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред
рдЖрдЧреЗ рдХреЗ рдкрд╛рда рдХреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреЛрдЦрд╛ рдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рд╡рдгрддрд╛ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднреВрд▓ рдЧрдП рд╣реИрдВред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
- рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИред
- github , javadoc рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб - рдЧреНрд░реВрд╡реА рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг, рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рдлрд╝реАрд▓реНрдб / рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рддрд░реНрдХ рдкреНрд░рдХрд╛рд░реЛрдВ (рдХреНрд▓реЛрдЬрд░ рдХреНрд▓реЛрдЬрд░) рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рд╕рдордЭрдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред
- рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рд╣рдм рдкрд░ рдПрдХ рд▓реЗрдЦ "рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг" рдкреБрд╕реНрддрдХ рдХреЗ рджреВрд╕рд░реЗ рдЕрдзреНрдпрд╛рдп рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рдкреБрд╕реНрддрдХ рдХреЛ рднреА рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред
- рдПрдХ рдФрд░ рд▓реЗрдЦ - buildSrc рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдХрдВрд╕реЛрд▓
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ / рдЖрдИрдбреАрдИрдП рд╢реНрд░рдорд╕рд╛рдзреНрдп рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрдорд╛рдВрдб рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд┐рд▓реНрдб.рдЧреНрд░реЗрдбрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмреЗрд╡рдХреВрдл рдпрд╛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдВрд╕реЛрд▓ рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдЧреНрд░реЗрдб рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬ рд╣реИред рдЧреНрд░реЗрдбрд░ рд░реИрдкрд░ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдирдХреНрд╕ / рдореИрдХреЛрд╕ / рд╡рд┐рдВрдбреЛ рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЖрдкрдХреЛ рд░реИрдкрд░ рдХреЗ рдмрдЬрд╛рдп рдмреИрдЯ рдлрд╛рдЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдЪреБрдиреМрддреА рдХрд╛рд░реНрдп
./gradlew tasks
рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИред
./gradlew subprojectName:tasks --all
рдЖрдк рдПрдХ рдЕрд▓рдЧ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ --all
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рдорд╛рдзреНрдпрдорд┐рдХ рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд рд╕рднреА рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЖрдк рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдХрд╛рд░реНрдп рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
./gradlew app:assembleDevelopDebug
рдпрджрд┐ рдЖрдк рдкреВрд░рд╛ рдирд╛рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рддреЛ рдЖрдк рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
./gradlew app:assembleDD
рдпрджрд┐ рдУрд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреМрди рд╕рд╛ рдХрд╛рд░реНрдп рд╣реИ, рддреЛ рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рд▓реЙрдЧрд┐рдВрдЧ
рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рдорд╛рддреНрд░рд╛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕реНрддрд░ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣рд╛рдБ -q, -w, -i, -d
, рдХреБрдЖрдВ, рдпрд╛ --quiet, --warn, --info, --debug
рдЬрд╛рдирдХрд╛рд░реА рдХреА рдмрдврд╝рддреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╣реИрдВред рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░, -d рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рддреБрд░рдВрдд рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдХреАрд╡рд░реНрдб рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:
./gradlew app:build -d > myLog.txt
рдпрджрд┐ рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╣реАрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдХрд▓реНрдк -s
рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдПред
рдЖрдк рд▓реЙрдЧ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
logger.warn('A warning log message.')
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ SLF4J рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред
рдЧреНрд░реВрд╡реА
build.gradle
рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рд╕рд┐рд░реНрдл рдЧреНрд░реВрд╡реА рдХреЛрдб рд╣реИред
рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЧреНрд░реВрд╡реА, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдзреНрдпрдпрди рдХреЗ рдпреЛрдЧреНрдп рд╣реИред 2003 рдореЗрдВ рднрд╛рд╖рд╛ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖред рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рд▓рдЧрднрдЧ рдХреЛрдИ рднреА java рдХреЛрдб рдорд╛рдиреНрдп groovy рдХреЛрдб рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рд╕рд╣рдЬрддрд╛ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИред
- рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рд╕реНрдереИрддрд┐рдХ, рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдЦрд╛рдВрдЪреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
String a = "a"
рдмрдЬрд╛рдп String a = "a"
рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдбреА def a = "a"
рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ def map = ['one':1, 'two':2, 'list' = [1,false]]
рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ def map = ['one':1, 'two':2, 'list' = [1,false]]
- рдРрд╕реЗ рдХреНрд▓реЛрдЬрд░ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЖрдк рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣реА
android {...}
рдмреНрд▓реЙрдХ рдХреНрд▓реЛрдЬрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред - рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕
"$a, ${b}"
, рдорд▓реНрдЯреАрд▓рд╛рдЗрди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ """yep, ${c}"""
рдХрд╛ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рд╣реИ, рдФрд░ рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рд╡рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдПрдХрд▓ рдЙрджреНрдзрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: 'text'
- рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рдЭрд▓рдХ рд╣реИред рдорд╛рдирдХ рднрд╛рд╖рд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ, рд╣рд░, рдкреНрд░рддреНрдпреЗрдХ, findAll рдЬреИрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдЕрд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╣реИрдВ ред
- рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╢рдХреНрдХрд░рдпреБрдХреНрдд рдЪреАрдиреА, рдХреЛрдб рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдФрд░ рд╕рд░рд▓ рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╕реВрдЪреА рдФрд░ рд╣реИрд╢
[a,b,c], [key1: value1, key2: value2]
рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЛрд╖реНрдардХ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ [a,b,c], [key1: value1, key2: value2]
рдЕрдЪреНрдЫрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ: [a,b,c], [key1: value1, key2: value2]
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд╛рдпрдерди / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдиреЗ рдЖрд╕рдорд╛рди рдЫреВ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЧреНрд░реВрд╡реА рдиреЗ рдирд╣реАрдВ - рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рд╣реИред рдЕрдкрдиреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП, рдЬрдм рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рднреА рдирд╣реАрдВ рдерд╛, рдФрд░ рдХреЛрдЯрд▓рд┐рди / рд╕реНрдХрд╛рд▓рд╛ рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдк рдЕрднреА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рдереЗ рдпрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рдереЗ, рдЧреНрд░реВрд╡реА рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рд╖рд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрдирд╛ рдерд╛ред
рдпрд╣ рдЧреНрд░реВрд╡реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рдерд╛ рдЬреЛ рд╣рдореЗрдВ рдЧреНрд░реЗрдбреЗрд▓ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдбреАрдПрд╕рдПрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рдерд╛ред
рдЧреНрд░реИрдбрд▓ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЕрдм рдХреЛрдЯрд▓рд┐рди рдкрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдирдХрд▓ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдЕрдм рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
task hello { doLast { println "hello" } }
рдмрдирд╛рдо
tasks.register("hello") { doLast { println("hello") } }
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрд░реИрдбрд▓ рдореЗрдВ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЕрднреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдгреЛрдВ
рд╡реЗ рдЖрд░рдВрднреАрдХрд░рдг, рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред
рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╡рдг рдПрдХ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдЯреЗрдЬ рдЙрд╕ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рдЬрдм build.gradle рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣:
copy { from source to dest }
рдпрд╛ рдЗрд╕ рддрд░рд╣:
task epicFail { copy{ from source to dest } }
рд╢рд╛рдпрдж рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдзреАрдореА рд╣реЛ рдЬрд╛рдПрдЧреАред рдкреНрд░рддреНрдпреЗрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ doLast{...}
рдпрд╛ doFirst{...}
рдХреЛ рдХрд╛рд░реНрдп рдореЗрдВ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдлрд┐рд░ рдХреЛрдб рдХреЛ рдПрдХ рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рддрдм рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
task properCopy { doLast { copy { from dest to source } } }
рдпрд╛ рддреЛ
task properCopy(type: Copy) { from dest to source }
рдкреБрд░рд╛рдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, doLast
рдмрдЬрд╛рдп <<
рдСрдкрд░реЗрдЯрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
task properCopy << { println("files copied") }
tasks.all
doLast
рдФрд░ doFirst
рд╕рд╛рде рдХреНрдпрд╛ рдордЬреЗрджрд╛рд░ рд╣реИ, рдЖрдк рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
tasks.all { doFirst { println("task $name started") } }
IDE рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ tasks
рдореЗрдВ рдПрдХ whenTaskAdded(Closure ...)
рд╡рд┐рдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди all(Closure ...)
рд╡рд┐рдзрд┐ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдХрд░рддреА рд╣реИ - рд╕рднреА рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓реЛрдЬрд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЬрдм рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред
рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ рдЬреЛ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ:
task printDependencies { doLast { tasks.all { println("$name dependsOn $dependsOn") } } }
рдпрд╛ рддреЛ:
task printDependencies { doLast { tasks.all { Task task -> println("${task.name} dependsOn ${task.dependsOn}") } } }
рдпрджрд┐ tasks.all{}
рд░рдирдЯрд╛рдЗрдо ( doLast
рдмреНрд▓реЙрдХ рдореЗрдВ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдк doLast
рдмрд┐рдирд╛ рднреА doLast
(рдпрд╛рдиреА, рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди), рддреЛ рдореБрджреНрд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрднреА рддрдХ рдЬреЛрдбрд╝реЗ рдирд╣реАрдВ рдЧрдП рд╣реИрдВред
рдЕрд░реЗ рд╣рд╛рдБ, рд╡реНрдпрд╕рдиреЛрдВ! рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рдХрд╛рд░реНрдп рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ:
anotherTask.dependsOn properCopy
рдпрд╛ рдЗрд╕ рддрд░рд╣ рднреА:
tasks.all{ task -> if (task.name.toLowerCase().contains("debug")) { task.dependsOn properCopy } }
рд╣рд░ рдмрд╛рд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ A рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдИ рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓ B рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдХрд╛рд░реНрдп рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред рдФрд░ рд╡рд░реНрдЧреАрдХреГрдд рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╢реЛрдзрди рддрд┐рдерд┐ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реАред
task generateCode(type: Exec) { commandLine "generateCode.sh", "input.txt", "output.java" inputs.file "input.txt" output.file "output.java" }
рдЗрд╕реА рддрд░рд╣, рдЖрдк рдлрд╝реЛрд▓реНрдбрд░реНрд╕, рд╕рд╛рде рд╣реА рдХреБрдЫ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: inputs.property(name, value)
ред
рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг
рдЬрдм рдХреЙрд▓рд┐рдВрдЧ ./gradlew tasks --all
рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рд╡рд░реНрдгрди рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдореВрд╣реАрдХреГрдд рд╣реИрдВред рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:
task hello { group "MyCustomGroup" description "Prints 'hello'" doLast{ print 'hello' } }
task.enabled
рдЖрдк рдХрд╛рд░реНрдп рдХреЛ "рдмрдВрдж" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдлрд┐рд░ рднреА рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдКрдкрд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
taskName.enabled false
рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ (рдореЙрдбреНрдпреВрд▓)
рдорд▓реНрдЯреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИ
рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЖрдк рдХрдИ рдФрд░ рдореЙрдбреНрдпреВрд▓ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд░реВрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓рдЧрдЗрди рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдФрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓рдЧрдЗрди рдХреЛ рднреА рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг: рдЬрдм jitpack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реВрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ рдмрдЪреНрдЪреЗ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдХрд╛рд╢рди рдкрд░ рд╕рдВрджреЗрд╣ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдмрд╛рд▓ рдореЙрдбреНрдпреВрд▓ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХреНрд░рдо:
include 'name'
рдпрд╣рд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ ред
buildSrc
рдЕрдЧрд░ build.gradle
рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдЬрд╛рджреВ рдирд╛рдо buildSrc
рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХреЛрдб рдХреЛ рдЧреНрд░реВрд╡реА рдпрд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдмрд▓реНрдХрд┐, buildSrc/src/main/java/com/smth/
code рдореЗрдВ, buildSrc/src/test
рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрдХреИрд▓рд╛ рдкрд░ рд▓рд┐рдЦреЗрдВ рдпрд╛ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рддреЛ рд╕реАрдзреЗ buildSrc
рдЖрдкрдХреЛ build.gradle
рдмрдирд╛рдиреЗ рдФрд░ build.gradle
рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ / рдкреНрд▓рдЧ рдЗрди рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, buildSrc
рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде buildSrc
рдЖрдИрдбреАрдИ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдмреЗрд╡рдХреВрдл рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рдЖрдпрд╛рдд рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ / рдХрд╛рд░реНрдп рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рд╡рд╣рд╛рдВ рд╕реЗ build.gradle
рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп build.gradle
рдореЗрдВ рднреА рдЖрдпрд╛рдд рдХрд░рдирд╛ build.gradle
ред import com.smth.Taskname
рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд╣реЗрд▓реА рдирд╣реАрдВ рд╣реИ рдХрд┐ buildSrc
рд╕реЗ рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛)ред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдкрд╣рд▓реЗ рдХреБрдЫ рдРрд╕рд╛ рд▓рд┐рдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬреЛ build.gradle
рдореЗрдВ рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдХреЛрдб рдХреЛ buildSrc
рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред
рд╕реНрд╡рдпрдВ рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рдХрд╛рд░
рдХрд╛рд░реНрдп DefaultTask
рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ, рдХрдИ рдлрд╝реАрд▓реНрдб, рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬрд╝реЗрдВ рд╣реИрдВред AbstractTask рдХреЛрдб DefaultTask рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
рдЙрдкрдпреЛрдЧреА рдмрд┐рдВрджреБ:
inputs
рдФрд░ outputs
рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп outputs
рдЖрдк рдлрд╝реАрд▓реНрдб рдФрд░ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: @Input, @OutputFile
, рдЖрджрд┐ред- рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдзрд┐ рдХреЛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
@TaskAction
ред - рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рдЬреИрд╕реЗ
copy{from ... , into... }
рдЕрднреА рднреА рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: project.copy{...}
рдЬрдм рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ build.gradle
рдореЗрдВ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддрд╛ рд╣реИ
taskName { ...
configure(Closure)
рд╡рд┐рдзрд┐ рдХреЛ рдХрд╛рд░реНрдп рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд╛рд░реНрдп рдореЗрдВ рдХрдИ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ рдЬрд┐рдирдХреА рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЧреЗрдЯреНрдЯрд░-рд╕реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ:
override def configure(Closure closure){ def result = super().configure(closure)
рдФрд░ рд▓рд┐рдЦрддреЗ рднреА рд╣реИрдВ
taskName.fieldName value
рддрдм configure
рд╡рд┐рдзрд┐ рдЕрднреА рднреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдЦреБрдж рдХрд╛ рдкреНрд▓рдЧрдЗрди
рдПрдХ рдХрд╛рд░реНрдп рдХреА рддрд░рд╣, рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдпрд╛ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, android{...}
рдореЗрдВ рдЬреЛ рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЧреБрдг рд╣реИ рдХрд╛рд▓рд╛ рдЬрд╛рджреВ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓рдЧ-рдЗрди, рдЬреЛ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдРрдк рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рдмрдирд╛рддрд╛ рд╣реИ: рд╕реНрд╡рд╛рдж рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрдиреЛрдВ / рдмрд┐рд▓реНрдб рдкреНрд░рдХрд╛рд░ / рдбрд┐рдореЗрдирд╕реНрдЯрд┐рдпрди рдХреЗ рд▓рд┐рдП assDDevelopDebugред рдЖрдкрдХреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдПрдХ рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рддреАрд╕рд░рд╛ рдЪрд░рдг рд╣реИ - рдЖрдк рдХреЛрдб рдХреЛ buildSrc
рдореЗрдВ рдирд╣реАрдВ buildSrc
, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, https://jitpack.io рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдкреНрд▓рдЧрдЗрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рдорд╛рди рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
рдЕрдВрдд
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЯрд╛рдЗрдкреЛрд╕ рдФрд░ рдЕрд╢реБрджреНрдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдиреЛрдЯ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдпрд╛ ctrl+enter
рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд ctrl+enter
- рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдХрд░ рджреВрдВрдЧрд╛ред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЛ "рдХреИрд╕реЗ рдХрд░реЗрдВ" рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВред