Maven(λ©μ΄λΈ)
1. λΉλ(Build)
- μμ€ νμΌμ μ»΄ν¨ν°μμ μ€νν μ μλ λ 립 μννΈμ¨μ΄ κ°κ³΅λ¬Όλ‘ λ³ννλ κ³Όμ λλ κ·Έμ λν κ²°κ³Όλ¬Όμ΄λ€.
- μμ±ν μμ€(.java), νλ‘μ νΈμμ μ°μΈ νμΌ λ° μμ(.xml, .jpg, .jar, .properties)μ JVMμ΄λ ν°μΊ£ κ°μ WASκ° μΈμν μ μλ κ΅¬μ‘°λ‘ ν¨ν€μ§ νλ κ³Όμ λ° κ²°κ³Όλ¬Όμ΄λΌκ³ ν μ μλ€.
1) λΉλ λꡬ(Build Tool)λ?
- νλ‘μ νΈ μμ±, ν μ€νΈ λΉλ, λ°°ν¬ λ±μ μμ μ μν μ μ© νλ‘κ·Έλ¨μ΄λ€.
- κ³μν΄μ λμ΄λλ λΌμ΄λΈλ¬λ¦¬μ μΆκ°, νλ‘μ νΈλ₯Ό μ§ννλ©° λΌμ΄λΈλ¬λ¦¬μ λ²μ λκΈ°νμ μ΄λ €μμ ν΄μνλ€.
- μ΅κ·Ό λνμ μΈ λΉλ λꡬλ‘λ Maven, Gradleμ΄ μλ€.
- 볡μ‘ν νλ‘μ νΈ, λ©ν° νλ‘μ νΈμ κ²½μ°λ Gradleμ΄ λ§μ΄ μ¬μ©λλ€.
2. Maven
- μλ° νλ‘μ νΈμ© κ΄λ¦¬ λκ΅¬λ‘ μ΄κΈ° λ§μ΄ μ¬μ©λλ Apache Antμ λμμΌλ‘ λ§λ€μ΄μ‘λ€.
- νλ‘μ νΈμ μ 체μ μΈ λΌμ΄ν μ¬μ΄ν΄μ κ΄λ¦¬νλ λꡬμ΄λ©°, λ§μ νΈλ¦¬ν¨μ΄ μ‘΄μ¬ν΄ λ리 μ¬μ©λκ³ μλ€.
- νμν λΌμ΄λΈλ¬λ¦¬λ₯Ό νΉμ λ¬Έμ(pom.xml)μ μ μν΄ λμΌλ©΄ λ΄κ° μ¬μ©ν λΌμ΄λΈλ¬λ¦¬λΏλ§ μλλΌ ν΄λΉ λΌμ΄λΈλ¬λ¦¬κ° μλνλ λ°μ νμν λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬λ€κΉμ§ κ΄λ¦¬νμ¬ λ€νΈμν¬λ₯Ό ν΅ν΄μ μλμΌλ‘ λ€μ΄λ‘λνμ¬ μ€λ€.
- μ€μ μ μ₯μλ₯Ό ν΅ν μλ μμ‘΄μ± κ΄λ¦¬λ₯Ό μ€μ μ μ₯μλ λΌμ΄λΈλ¬λ¦¬λ₯Ό 곡μ νλ νμΌ μλ²λΌκ³ λ³Ό μ μκ³ , Mavenμ μκΈ° νμ¬λ§μ μ€μ μ μ₯μλ₯Ό ꡬμΆν μλ μλ€.
- κ°λ¨ν μ€μ μ ν΅ν λ°°ν¬κ° κ°λ₯νλ€.
1) LifeCycle
Mavenμ νλ μμν¬μ΄κΈ° λλ¬Έμ λμ λ°©μμ΄ μ ν΄μ Έ μκ³ , 미리 μ μνκ³ μλ λΉλ μμκ° μλ€.
ν¬κ² Default, Clean, Site λΌμ΄ν μ¬μ΄ν΄λ‘ λλκ³ μΈλΆμ μΌλ‘ νμ΄μ¦(phase)κ° μλ€.
νμ΄μ¦λ μμ‘΄(Dependency) κ΄κ³λ₯Ό κ°μ§κ³ μμ΄ νμ΄μ¦κ° μνλλ €λ©΄ μ΄μ λ¨κ³μ νμ΄μ¦κ° λͺ¨λ μνλμ΄μΌ νλ€.
- Default(Build): μΌλ°μ μΈ λΉλ νλ‘μΈμ€λ₯Ό μν λͺ¨λΈ
- Compile: νλ‘μ νΈμ μμ€μ½λλ₯Ό μ»΄νμΌνλ λ¨κ³
- Test: μ λ(λ¨μ) ν μ€νΈλ₯Ό μννλ λ¨κ³λ‘ ν μ€νΈ μ€ν¨ μ λΉλ μ€ν¨λ‘ μ²λ¦¬νλ€. (μ€ν΅ κ°λ₯)
- Pacakge: μ€μ μ»΄νμΌλ μμ€ μ½λμ 리μμ€λ€μ jar, war λ±λ±μ νμΌ λ±μ λ°°ν¬λ₯Ό μν ν¨ν€μ§λ‘ λ§λλ λ¨κ³
- Install: ν¨ν€μ§λ₯Ό λ‘컬 μ μ₯μμ μ€μΉνλ λ¨κ³
- Deploy: λ§λ€μ΄μ§ packageλ₯Ό μ격 μ μ₯μμ release νλ λ¨κ³
- Clean: λΉλ μ μμ±λμλ νμΌλ€μ μμ νλ λ¨κ³
- Site: νλ‘μ νΈ λ¬Έμμ μ¬μ΄νΈ μμ±, μμ±νλ λ¨κ³
- Validate: νλ‘μ νΈκ° μ¬λ°λ₯Έμ§ νμΈνκ³ νμν λͺ¨λ μ 보λ₯Ό μ¬μ©ν μ μλμ§ νμΈνλ λ¨κ³
- Verify: ν΅ν© ν μ€νΈ κ²°κ³Όμ λν κ²μ¬λ₯Ό μ€ννμ¬ νμ§ κΈ°μ€μ μΆ©μ‘±νλμ§ νμΈνλ λ¨κ³
2) μ€μ νμΌ
- settings.xml: Maven Toolκ³Ό κ΄λ ¨ν μ€μ νμΌλ‘ MAVEN_HOME/conf λλ ν°λ¦¬μ μμΉνλ€.
- pom.xml: POM(Project Object Model)μ μ€μ νλ λΆλΆμΌλ‘ νλ‘μ νΈ λ΄ λΉλ μ΅μ μ μ€μ νλ λΆλΆμ΄λ€.
3) μ¬μ©νλ μ΄μ
Mavenμ μ£Όμ κΈ°λ₯μ νλ‘μ νΈλ₯Ό λΉλνκ³ λΌμ΄λΈλ¬λ¦¬λ₯Ό κ΄λ¦¬ν΄μ£Όλ κ²μ΄λ€. μ΄λ¬ν κΈ°λ₯μ κ°λ°μλ€μ΄ νΈνκ² μλ‘ μΌν μ μλλ‘ λμμ€λ€.
νλ‘μ νΈλ₯Ό μ§ννλ©° μ¬μ©νκ² λλ λΌμ΄λΈλ¬λ¦¬λ μ μ λμ΄λ κ²μ΄κ³ λ§μμ§μλ‘ κ΄λ¦¬λ νλ€ κ²μ΄λ€. κ°λ°μ λͺ¨λ κ°μ νκ²½μμ κ°λ°μ μ§νν΄μΌ νκΈ° λλ¬Έμ λΌμ΄λΈλ¬λ¦¬λ₯Ό κ³μν΄μ 곡μ νκ³ ν¨κ» κ΄λ¦¬ν΄μΌ νλ€. κ·Έλ κΈ° λλ¬Έμ κ³μ λΌμ΄λΈλ¬λ¦¬λ₯Ό import νλ κ²λ³΄λ¨ pom.xmlλ§ κ³΅μ νμ¬ κ΄λ¦¬νλ κ²μ΄ ν¨μ¬ ν¨μ¨μ μ΄λ€. λν λΌμ΄λΈλ¬λ¦¬μ νμ λΌμ΄λΈλ¬λ¦¬κΉμ§ λ²μ μ λ§κ² λ°μμ£ΌκΈ° λλ¬Έμ κ΄λ¦¬λ μ©μ΄νλ€.