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