Gradle
κ°μ
κΈ°μ‘΄ Ant / Maven κ³Ό μ μ¬νμ§λ§ μ§νλ λΉλ ν΄λ‘μ¨ λΉλ, ν μ€νΈ, λ°°ν¬, κ°λ° λ±μ μλνλ₯Ό μ€νν μ μλ€.
Ant λΉλλ μ μ°μ±μ΄ λ°μ΄λ λΉλ ν΄λ‘μ κ°λ°μκ° μμ λ‘κ² λΉλλ¨μ (target) μ μ§μ νκ³ λΉλ λ¨μκ°μ μμ‘΄κ΄κ³λ₯Ό μμ λ‘κ² μ€μ ν μ μλ€λ κ²μ΄λ€.
μμ λκ° λλ€λκ²μ μ’μ λꡬμ΄μ§λ§ μ λλ‘ μ°μ§ λͺ»νλ©΄ μ λ¬Όλ¨μ§λ λ€λ¦μλ€.
Maven μ κ°μ₯ ν° μ₯μ μ Convention Over Configuration μ μ λ΅μ λ°λΌ κ΄λ‘λ‘ μ ν΄μ Έ μλ€.
Convention Over Configuration ?
Convention Over Configuration(CoC)λ μ€μ 보λ€λ κ΄λ‘λΌκ³ λ νλ©° μννΈμ¨μ΄ κ°λ°μκ° μ ν΄μΌ νλ μλ§μ κ²°μ λ€μ μ€μ¬μ£Όκ³
λ¨μμ±μ ν보νλ©΄μ μ μ°ν¨μ μμ§ μκ² νκΈ° μν μ€κ³ ν¨λ¬λ€μμ΄λ€.
νλ μμν¬κ° 볡μ‘νκ³ λ°©λν΄ μ§μ λ°λΌ 볡μ‘ν μλ§μ μ€μ νμΌκ³Ό μΈν
μ λν λΆλ΄μ΄ λμ΄λ¬κ³
CoC λ μ΄λ₯Ό ν΄κ²°ν΄μ£ΌκΈ° μν΄ μμ£Ό μ¬μ©λλ λΆλΆλ€μ κ΄λ‘λ₯Ό μ νμ¬ μλ΅νκ³ μ΄λ₯Ό λ°λ₯΄μ§ μλ κ²½μ°μλ§ μ€μ μ νλλ‘ νκ³ μλ€.
CoC ν¨λ¬λ€μμ μ μ©νλ©΄ μλμ μΌλ‘ μμ λκ° λ¨μ΄μ§λ€λ μκ²¬μ΄ μμ§λ§
νμΌλ‘ μΌνκ² λλ νΉμ±μ νμ€νμ κ·κ²©νκ° μ ν΄μ§μ§ μλλ€λ©΄
곡μ μ νμ
μ΄ νλ€μ΄μ§κΈ° λλ¬Έμ μ΄ CoC ν¨λ¬λ€μμ μ μ©νλ μ¬λ‘λ λκ³ μλ€.
νΉμ§
- Groovy κΈ°λ°μ DSL (Domain Specific Language) μ±μ©
- μμ‘΄μ± κΈ°λ° νλ‘κ·Έλλ°μ μν μΈμ΄
- λΉλμ ꡬ쑰ν
- API μ 곡
- Multi Project λΉλ
- μμ‘΄μ± κ΄λ¦¬μ λ€μν λ°©λ² μ 곡
- Migration μ νΈμμ±
- Build Script λ Groovy λ‘ μμ±
μ°Έκ³ μλ£
μ¬μ©
Gradle μ€μΉ
Mac
# brew gradle
Ubuntu
# μ μ₯μ μΆκ°
$ add-apt-repository ppa:cwchien/gradle
# apt-get μ
λ°μ΄νΈ
$ apt-get update
# Gradle μ€μΉ
$ apt-get install gradle
Gradle λΉλ
# gradle build
Gradle Build μμ μ€νκ°λ₯ν jar λ§λ€κΈ°
manifest νμΌμ μμ±νμ¬ λ±λ‘ ν΄μΌ νλ€.
μ°Έκ³ μλ£
Gradle Task
μ°Έκ³ μλ£
Gradle Dependencies
api
(:==compile
) μ implementation
μμ‘΄μ± μ°¨μ΄κ° ν¬λ€
api
λ λΉλνμ μΈλΆμ νμν μμ‘΄μ±μ λ
ΈμΆνκ³
implementation
μ λΉλ νμλ μΈλΆμ μμ‘΄μ±μ΄ λ
ΈμΆλμ§ μλλ‘ νλ€.
μ΄λ μμ‘΄μ± λ ΈμΆμ΄ λλ μ μ μ°¨μ΄λ μκ² μ§λ§ μλμ μμ‘΄λμ λ°λ₯Έ κ°μ΄ λΉλ μ°¨μ΄μ λ μ‘΄μ¬νλ€.
api
λ C
κ° μμ μμ ν΄λΉ λΌμ΄λΈλ¬λ¦¬λ₯Ό μμ‘΄νκ³ μλ B
A
λͺ¨λ μ¬ λΉλ νλ€.
implementation
μ C
κ° μμ μμ ν΄λΉ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μ μ μΌλ‘ μμ‘΄νκ³ μλ B
λ§ μ¬ λΉλ νλ€.
Java Library plugin - μμ‘΄μ± μ μΈ μ€μ
μ€μ λͺ | Role | Consumable | Resolvable | μ€λͺ |
---|---|---|---|---|
api | API μμ‘΄μ± μ μΈ | N | N | μ»΄νμΌμ μν΄μ νμν μμ‘΄μ±μ μ μΈνλ€. |
implementation | ꡬνν μμ‘΄μ± μ μΈ | N | N | μΈλΆμ λ ΈμΆλμ§ μλλ‘ μμ‘΄μ±μ μ€μ νλ€. |
compileOnly | ||||
runtimeOnly | ||||
testImplementation | ||||
testCompileOnly | ||||
testRuntimeOnly |
β Dispatcher Servlet View Template β