рдЧреНрд░реИрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯред рдХрджрдо рд╕реЗ рдХрджрдо

рдЧреНрд░реИрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдФрд░ рдЕрдкрдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЧреБрд▓реНрд▓рдХ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрджрдо-рджрд░-рдЪрд░рдг рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрдврд╝рдиреЗ рд╕реЗ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдЬреЛ рдЧреНрд░реИрдЬрд▓ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ рд╡реЗ "рдХреЛрд╢рд┐рд╢" рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред



рдпрд╣ рд▓реЗрдЦ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕, рдХрд╛рд░реНрдп, рдирд┐рд░реНрднрд░рддрд╛, рд╕реНрд╡рдд: рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд┐рд▓реНрдбрд░ рдХреЗ рдЕрдиреНрдп рдкреНрд░рд╕рдиреНрди рдЬреИрд╕реЗ рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╖рдп рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдм рдкрд░ рдЗрди рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЦ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЧреНрд░реИрдбрд▓: рдХрд╛рд░реНрдп рдХреНрдпрд╛ рдХреЛрдб рд╣реИрдВ , рдЧреНрд░реЗрдб: рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ред рдФрд░ рдЧреНрд░реИрдбрд▓ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЧреНрд░реИрдбрд▓реА рдпреВрдЬрд░ рдЧрд╛рдЗрдб рдПрдХ рд╕реБрдВрджрд░ рд▓рд┐рдЦрд╛ рд╣реБрдЖ рд╣реИред рдореИрдВ рдХрд╛рд░реНрдп рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдорд╛рдзрд╛рди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛, рдФрд░ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкрд╣рд▓реЗ рд╣рдо рд▓рдХреНрд╖реНрдп рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рдХрд╛рд╕ рдкрд░ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдФрд░ рд▓рдХреНрд╖реНрдп рдХреЛ рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдХрдИ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЧреНрд░реИрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░реЗрдВред





рдЪрд░рдг 1. рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдХреЗрд╡рд▓ "рдкреНрд▓реЗ" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рдореИрдЬрд┐рдХ рдлрд╛рдЗрд▓ gradlew (gradlew.bat) рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдФрд░ рдХреЗ рд╕реНрд░реЛрдд рдорд┐рд▓ рдЧрдП рд╣реИрдВ, рддреЛ gradle рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред



рдЧреНрд░реЗрдбреЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдкреЗрдЬ рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпрд╛ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдУрдПрд╕ рдореЗрдВ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░реЗрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ: рдореИрдВрдиреЗ рдЗрд╕реЗ рдореИрдХ рдУрдПрд╕ рдкрд░ рдмреНрд░реВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдбреЗрдмрд┐рдпрди рдкрд░ рдЙрдкрдпреБрдХреНрдд рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛)



рдкрд╣рд▓реЗ рдЪрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо:

$ gradle -version ------------------------------------------------------------ Gradle 1.11 ------------------------------------------------------------ Build time: 2014-02-11 11:34:39 UTC Build number: none Revision: a831fa866d46cbee94e61a09af15f9dd95987421 Groovy: 1.8.6 Ant: Apache Ant(TM) version 1.9.2 compiled on July 8 2013 Ivy: 2.2.0 JVM: 1.8.0_05 (Oracle Corporation 25.5-b02) OS: Mac OS X 10.9.3 x86_64
      
      







рдЪрд░рдг 2. рдЦрд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛, рдкреНрд▓рдЧрдЗрдиреНрд╕, рдЖрд╡рд░рдг


рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде build.gradle



рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:



{project_path} /build.gralde

 apply plugin: тАЬjavaтАЭ apply plugin: тАЬapplicationтАЭ task wrapper(type: Wrapper) { gradleVersion = '1.12' }
      
      





рдЪрд▓реЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рдерд╛ рдЙрд╕ рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛ Groovy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЧреНрд░реЗрдбреЗрд▓ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдШреЛрд╖рдгрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдорд┐рд▓рддреА рд╣реИред

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо java



рдФрд░ application



рдкреНрд▓рдЧ рдЗрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред java



рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЬрд╛рд░ рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдЬрд╛рд░ рдЖрд░реНрдХрд╛рдЗрд╡ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рди рдХреЛрдб - рдЖрджрд┐ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд▓рдЧрдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред application



рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рд░рди - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ; installApp - рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдпрд╣ рдХрд╛рд░реНрдп * рдирд┐рдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ (рдмреИрдЯ рдлрд╝рд╛рдЗрд▓) рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ; distZip - рдПрдХ рдЬрд┐рдк рдЖрд░реНрдХрд╛рдЗрд╡ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рдЬрд╛рд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд╣рд╛рдВ рд░рдЦрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреАред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

рдЕрдм рд╣рдо wrapper



рдЯрд╛рд╕реНрдХ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рд╕рдВрднрд╡рддрдГ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИред $ gradle wrapper



, рд╣рдореЗрдВ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:



 $ gradle wrapper :wrapper BUILD SUCCESSFUL Total time: 7.991 secs
      
      





 $ ls -a . .. .gradle build.gradle gradle gradlew gradlew.bat
      
      





рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП * nix, gradlew.bat рдФрд░ рд╕рд╛рде рд╣реА gradle рдФрд░ .gradle рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП gradlew рдирд┐рд╖реНрдкрд╛рджрдХ рдмрдирд╛рдП рд╣реИрдВред рдЫрд┐рдкреЗ рд╣реБрдПред Regle рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рд╕рднреА рдмреЗрд╕рд┐рдХ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдореЗрдВ рдФрд░ gradlew рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реА рд╣реИред рдЕрдм рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреА jdk рд╣реИ, рдФрд░ рд╡рд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди, рдЗрдХрдЯреНрдард╛, рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ ./gradlew



ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реЗ рдврд╛рд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг (рдКрдкрд░ $ gradle -version



рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ) build.gradle рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡рд░рдг рдХрд╛рд░реНрдп рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ gradle рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рддрд╛ рд╣реИред



 $ ./gradlew -version ------------------------------------------------------------ Gradle 1.12 ------------------------------------------------------------ Build time: 2014-04-29 09:24:31 UTC Build number: none Revision: a831fa866d46cbee94e61a09af15f9dd95987421 Groovy: 1.8.6 Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013 Ivy: 2.2.0 JVM: 1.8.0_05 (Oracle Corporation 25.5-b02) OS: Mac OS X 10.9.3 x86_64
      
      





рдЕрдм, gradlew



рдмрдЬрд╛рдп gradle



рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ gradlew



рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ $ ./gradlew



рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ .gralde



рдлрд╝реЛрд▓реНрдбрд░ .gralde



рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╡рд╣рд╛рдВ рд╕рднреА рдЖрд╢реНрд░рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рдиреАрдЪреЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ)ред рд▓реЗрдХрд┐рди рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдЧреНрд░реЗрдбреЗрд▓ (gradlew) рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рд▓рд╛рдкрддрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд┐рд╕рдореЗрдВ gradlew рдлрд╛рдЗрд▓реЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЖрдк рддреБрд░рдВрдд рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдп рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдПрдХ рд╕реВрдЪреА рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ./gradlew tasks







рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо (рдирд┐рд╖реНрдХрд░реНрд╖ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ):

 $ ./gradlew tasks :tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Application tasks ----------------- distTar - Bundles the project as a JVM application with libs and OS specific scripts. distZip - Bundles the project as a JVM application with libs and OS specific scripts. installApp - Installs the project as a JVM application along with libs and OS specific scripts. run - Runs this project as a JVM application ... Other tasks ----------- wrapper ... To see all tasks and more detail, run with --all. BUILD SUCCESSFUL Total time: 7.808 secs
      
      







рдЪрд░рдг 3. рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рднрд░реЗрдВ


рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ gradle



рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЦрд╛рд▓реА рдкреНрд░рдХрдЯрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЧреНрд░реИрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЙрд╕реА рддрд░рд╣ рдорд╛рд╡реЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

 src -main -java -resources -test -java -resources
      
      





main/java



рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА java рдлрд╛рдЗрд▓реНрд╕ рд╣реИрдВ, main/resources



рдмрд╛рдХреА рдлрд╛рдЗрд▓реЗрдВ (* .properties, * .xml, * .img рдФрд░ рдЕрдиреНрдп) рд╣реИрдВред test



рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред

рдЪреВрдВрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде src/main



рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдХрд░ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо Log4j рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред build.gradle



рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ, src/main/java



рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ com/example/Main.java



рдмрдирд╛рдПрдБ, рд╕рд╛рде рд╣реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ Log4j src/main/resources/log4j.xml



log4j.xml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рдФрд░ gradle.properties



рдлрд╝рд╛рдЗрд▓ (рд╡реИрдХрд▓реНрдкрд┐рдХ, рдиреАрдЪреЗ рд╡рд┐рд╡рд░рдг)



{project_path} /build.gradle

 apply plugin: "java" apply plugin: "application" mainClassName = "com.example.Main" sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 repositories { mavenCentral() } dependencies { compile "log4j:log4j:1.2.17" } jar { manifest.attributes("Main-Class": mainClassName); } task wrapper(type: Wrapper) { gradleVersion = "1.12" }
      
      





{project_path} /gradle.properties

 org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/
      
      





{project_path} /src/main/java/com/example/Main.java

 package com.example; import org.apache.log4j.Logger; public class Main { private static final Logger LOG = Logger.getLogger(Main.class); public static void main(String[] args) { LOG.info("Application started"); System.out.println("I'm the main project"); LOG.info("Application finished"); } }
      
      





{project_path} /src/main/resources/log4j.xml

 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%p %c: %m%n"/> </layout> </appender> <root> <priority value ="debug" /> <appender-ref ref="console" /> </root> </log4j:configuration>
      
      





build.gradle



рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рдордиреЗ рдЪрд░ mainClassName



рдЬреЛрдбрд╝рд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ run



рдЯрд╛рд╕реНрдХ рдореЗрдВ application



рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдпрд╣ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ JavaVersion.VERSION_1_7



рдХрд╛ рдорд╛рди JavaVersion.VERSION_1_7



рдХрд░рддреЗ рд╣реБрдП targetCompatibility



рдФрд░ targetCompatibility



рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ рд╣реИред рдпреЗ java



plugin рдХреЗ рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИрдВ; рдпреЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ jdk рдХреЗ рдХреМрди рд╕реЗ рд╡рд░реНрдЬрди рдХреЛ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд▓рд╛ рдмреНрд▓реЙрдХ repositories



ред рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рд╣рдо рдорд╛рд╡реЗрди рднрдВрдбрд╛рд░ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред рдЧреНрд░реИрдбрд▓ рдЙрд╕рдХреЗ рд╕рд╛рде рдмрд╣реБрдд "рджреЛрд╕реНрддрд╛рдирд╛" рд╣реИред dependencies



рдмреНрд▓реЙрдХ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рдо рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╣рдо рд╕рдВрдХреЗрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ compile



рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП log4j рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИред рдЖрдк рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 complie group: 'log4j', name: 'log4j', version: '1.2.17'
      
      





рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдорд╛рд╡реЗрди рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдмреНрд▓реЙрдХ:

 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
      
      





рдЖрдк compile files('libs/a.jar', 'libs/b.jar')



рдФрд░ compile project(':library_project')



compile files('libs/a.jar', 'libs/b.jar')



compile project(':library_project')



compile files('libs/a.jar', 'libs/b.jar')



рдкрд░ рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

build.gradle



рдХрд╛ рдЕрдВрддрд┐рдо рдЬреЛрдбрд╝ jar



рдмреНрд▓реЙрдХ рд╣реИред рдпрд╣ java



рдкреНрд▓рдЧрдЗрди рдХреЛ рднреА рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЛ рдКрдкрд░ рдШреЛрд╖рд┐рдд mainClassName



рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ gradle.properties



рдлрд╝рд╛рдЗрд▓ рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреВрд░реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдмрд┐рдЦрд░рд╛ рд╣реБрдЖ рд╣реИ, рдереЛрдбрд╝рд╛ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рд╣реИ ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ JAVA_HOME



рдЪрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╕рдЪ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ jdk рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, $ gradle -version



рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ JVM: 1.8.0_05 (Oracle Corporation 25.5-b02)



рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг JVM: 1.8.0_05 (Oracle Corporation 25.5-b02)



ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ src/main/java/Main.java



рдФрд░ src/main/resources/log4j.xml



рдкрд░ рдмрд╕рдирд╛ рд╡реНрдпрд░реНрде рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рд╣рдо рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЛ рджреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВ, рд╕рдВрджреЗрд╢ "рдореИрдВ рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реВрдВ" рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред Log4j рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рднреА рдХрдВрд╕реЛрд▓ рдХреЛ рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред



рддреАрд╕рд░реЗ рдЪрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо:

 $ ./gradlew run :compileJava Download http://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar :processResources :classes :run INFO com.example.Main: Application started I'm the main project INFO com.example.Main: Application finished BUILD SUCCESSFUL Total time: 14.627 secs
      
      





рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдкрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдЪрд░рдг 4. рд▓рдХреНрд╖реНрдп рддрдХ рдкрд╣реБрдБрдЪрдирд╛


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдЧреНрд░реЗрдбреЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЪрд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ: рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдмрд╣реБ- рдореЙрдбреНрдпреВрд▓рд░рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдпрд╛ рдорд▓реНрдЯреАрдкрд▓ -рдкреНрд░реЛрдЬреЗрдХреНрдЯ , рдЬреЛ рдХрд┐ рдкрджрд╡реА рд╢рдмреНрджрд╛рд╡рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдБ: main_project



рдФрд░ main_project



ред рдЕрдм src



рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ build.gradle



рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╕ рдмрдирд╛рдП рдЧрдП main_project



рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдБ, рдФрд░ рд░реВрдЯ рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ settings.gradle



рдмрдирд╛рдПрдБред рдлрд╝рд╛рдЗрд▓ ( рдпрд╣рд╛рдБ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ):



{project_path} /settings.gradle

 rootProject.name = 'Gradle_Multiproject' include 'main_project'
      
      





рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреНрдпрд╛ рдХрд╣рд▓рд╛рддреА рд╣реИ рдФрд░ рдХрд┐рди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдЧреНрд░реЗрдбреЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕)ред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдПрдХ main_project



рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо $ ./gradlew run



рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ $ ./gradlew main_project:run



рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ $ ./gradlew main_project:run



, рдФрд░ рдЪрд░рдг 3 рдХреЗ рдЕрдВрдд рдореЗрдВ рднреА рд╡реИрд╕рд╛ рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рдд, рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ред рд╣рдо рдЕрдиреНрдп рд╕рднреА jar, build, installApp рдХрдорд╛рдВрдб рдЖрджрд┐ рдХреЛ рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЧреНрд░реЗрдб, рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдЬреБрдбрд╝реЗ рд╣реБрдП рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдпрд╣ рдХрд╛рд░реНрдп рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд▓рдЧрдЗрди рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ main_project рд╣реЛрдЧрд╛, рдХрдорд╛рдВрдб $ ./gradlew run



рд░рди рдХреЗрд╡рд▓ рдЗрд╕ $ ./gradlew run



)

рдЕрдм рд╣рдорд╛рд░реЗ library_project



рдореЗрдВ рдХреЛрдб рдмрдирд╛рдПрдВред build.gradle



рдФрд░ src/main/java/com/example/library/Simple.java







{project_path} /library_project/build.gradle

 apply plugin: "java" sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7
      
      







{project_path} /library_project/src/main/java/com/example/library/Simple.java

 package com.example.library; public class Simple { private int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; } }
      
      







рдЗрд╕ build.gradle



рд▓рд┐рдП build.gradle



рдЬреНрдпрд╛рджрд╛ рд╕рд░рд▓ рд╣реИред рд╣рдо рдЬрд╛рд╡рд╛ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреЗрдбрдбреАрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЪрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЕрдм рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА_рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рд╕реЗрдЯрд┐рдВрдЧ.рдЧреНрд░реЗрдб рдлрд╛рдЗрд▓ рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ:



{project_path} /settings.gradle

 rootProject.name = 'Gradle_Multiproject' include 'main_project', 'library_project'
      
      





рдЕрдм рд╣рдо рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпреБрдХреНрдд рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ $ ./gradlew library_project:jar



рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ $ ./gradlew library_project:jar



ред

 $ ./gradlew library_project:jar :library_project:compileJava :library_project:processResources UP-TO-DATE :library_project:classes :library_project:jar BUILD SUCCESSFUL Total time: 10.061 secs
      
      





рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ {project_path}/library_project/build/libs/library_project.jar



рдкрд░ {project_path}/library_project/build/libs/library_project.jar



рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЕрдм Simple



рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ main_project



ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, {project_path}/main_project/build.gradle



рдлрд╝рд╛рдЗрд▓ рдореЗрдВ dependencies



рдмреНрд▓реЙрдХ рдореЗрдВ рд▓рд╛рдЗрди compile project(":library_project")



{project_path}/main_project/build.gradle



, рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП {project_path}/main_project/build.gradle



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



MiniM рд╕реЗ рдкрд░рд┐рд╡рд░реНрдзрди : рдкреНрд░рд╡рдгрддрд╛ рдореЗрдВ, рдкреНрд░рддреАрдХ ":" рдХрд╛ рдЙрдкрдпреЛрдЧ "/" рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╢рд╛рдЦрд╛рдУрдВ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд┐рдВрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ :: рд▓реЛрдбрд░: xml-loader



{project_path} /main_project/build.gradle ( dependencies



рдмреНрд▓реЙрдХ)

 dependencies { compile "log4j:log4j:1.2.17" compile project(":library_project") }
      
      







{project_path} /main_project/src/main/java/com/example/Main.ava

 package com.example; import org.apache.log4j.Logger; import com.example.library.Simple; public class Main { private static final Logger LOG = Logger.getLogger(Main.class); public static void main(String[] args) { LOG.info("Application started"); System.out.println("I'm the main project"); Simple simple = new Simple(); simple.setValue(10); System.out.println("Value from Simple: " + simple.getValue()); LOG.info("Application finished"); } }
      
      





рдЖрдк рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЪреМрдереЗ рдЪрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо:

 $ ./gradlew run :library_project:compileJava UP-TO-DATE :library_project:processResources UP-TO-DATE :library_project:classes UP-TO-DATE :library_project:jar UP-TO-DATE :main_project:compileJava :main_project:processResources UP-TO-DATE :main_project:classes :main_project:run INFO com.example.Main: Application started I'm the main project Value from Simple: 10 INFO com.example.Main: Application finished BUILD SUCCESSFUL Total time: 11.022 secs
      
      







рдЪрд░рдг 5 (рдЕрдВрддрд┐рдо)ред рд╣рдо рдХрдЪрд░рд╛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ


рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╢реНрди рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдирдХрд▓ рдХрд░рдиреЗ, рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕реЗрдЯреЗрд▓ рдХрд░рдиреЗ, рдФрд░ рдЖрдЧреЗ рдХреНрдпрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЙрда рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕ рдмреАрдЪ, рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдХрд░ build.gradle



рдХреЗ рд░реВрдЯ рдореЗрдВ build.gradle



рдФрд░ рдмрд╛рдХреА рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓ рджреЗрдВ



{project_path} /build.gradle

 apply plugin: "idea" apply plugin: "eclipse" subprojects { apply plugin: "java" tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 } repositories { mavenCentral() } } task wrapper(type: Wrapper) { gradleVersion = "1.12" }
      
      





{project_path} /main_project/build.gradle

 apply plugin: "application" version = '1.0' mainClassName = "com.example.Main" dependencies { compile "log4j:log4j:1.2.17" compile project(":library_project") } jar { manifest.attributes("Main-Class": mainClassName); }
      
      





{project_path} /build.gradle

 version = "1.1_beta"
      
      





рд░реВрдЯ build.gradle



рд╣рдо рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ) рдФрд░ рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЖрд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрдбрд╝ рдкрд░ред

subprojects



рдмреНрд▓реЙрдХ рдореЗрдВ рд╣рдо subprojects



рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН: рд╣рдо рдЬрд╛рд╡рд╛ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ - рд╕рднреА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ; jdk рд╕рдВрд╕реНрдХрд░рдг рд╕реЗрдЯ рдХрд░реЗрдВ; рд╣рдо рдорд╛рд╡реЗрди рднрдВрдбрд╛рд░ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднреА рд╣рдо рд╡рд┐рдЪрд╛рд░ рдФрд░ рдЧреНрд░рд╣рдг рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд IDE рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рд░реИрдкрд░ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд░реВрдЯ рдкрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдордиреЗ рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ version



рдЪрд░ рдЬреЛрдбрд╝рд╛ред рдЗрд╕ рдЪрд░ рдХрд╛ рдорд╛рди рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Library_project.jar рдХреЗ рдмрдЬрд╛рдп рдЕрдм Library_project-1.1.beta.jar рд╣реЛрдЧрд╛ред

allprojects



рдмреНрд▓реЙрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк allprojects



рдпрд╛ project(':project_name')



рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ ред



рдЗрд╕ рдкрд░ рдореИрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЧреНрд░реИрдбрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд░реБрдЪрд┐ рдЬрдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдФрд░ рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред



рдЕрддрд┐рд░рд┐рдХреНрдд:

MiniM : рдЧреНрд░реЗрдбреЗрд▓ рдореЗрдВ, рдкреНрд░рддреАрдХ ":" рдХрд╛ рдЙрдкрдпреЛрдЧ "/" рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╢рд╛рдЦрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд┐рдВрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ :: рд▓реЛрдбрд░: xml-loader

leventov : idea



рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде idea



ред issues.gradle.org/browse/GRADLE-1041 , рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред



рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


рдмрд┐рдЯрдмрдХреЗрдЯ рдкрд░ рд▓реЗрдЦ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд░реЛрдд ( рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ )

Gradle

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд╛рдЗрдб рдЧреНрд░реЗрдб рдХрд░реЗрдВ

рдЕрдкрд╛рдЪреЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрд╡рд╛рдПрдВ

рдЕрдкрд╛рдЪреЗ рдорд╛рд╡реЗрди

рдЧреНрд░реВрд╡реА рднрд╛рд╖рд╛



All Articles