SlideShare a Scribd company logo
1 of 17
Download to read offline
Ant & Maven & Gradle
양파지기 스터디 모임
권용근
Ant, Maven, Gradle??
Maven, Gradle, Ant, Ivy
=
Java Build Tool
Java Build Tool?
컴파일
소스코드를 사용할 수 있는 실행 파일로 변환
빌드
빌드 > 컴파일
컴파일, 테스팅, 점검, 배포
소스의 컴파일을 포함해 어플리케이션을 사용할 수 있는 형태로 만들어주는 과정.
소프트웨어가 응집력있는 하나의 단위로써 잘 동작하는지 확인하는 과정.
Ant, Maven, Gradle??
2002 2012 2000 2004
출처 :
https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
Ant, Maven, Gradle??
출처 :
https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
Ant
완전 개발자 친화적
● 정해진 규칙, 프로세스 X
● 모든 것을 개발자가 정의
● Task 중심
Ant 자체는 XML이나 Remote Repository(Dependency)를 사용할 수 없음
그래서
+
Maven
Strong convention but hard to implement custom logic
규칙, 프로세스가 뚜렷하게 정의,
그러나 맞춤 로직을 구현하기 어렵다
CoC, Convention over Configuration
명확한 관습으로 인해 더 편해진다는 의미
Maven - 핵심
의존성(Dependency) 라이프사이클
플러그인(모조) Pom.xml
Maven - 의존성
라이브러리 다운로드 자동(원격 저장소로부터)
Maven - Plugin, Mojo
Maven은 Plugin을 실행하는 프레임워크
Goal(Mojo)
들의 집합
Maven - 라이프사이클
Goal들의 단계를 정의
하나의 Goal은 하나 이상의
라이프사이클에 속하게 됨.
라이프사이클은 단계일 뿐 실제
실행되는 것은 플러그인.
Maven - Pom.xml
Project Object Model
프로젝트 자체와 의존성에 대한 설정 및 정보를 포함
그룹 ID, 아티펙트 ID, 버전으로 자원 식별
다양한 설정이 있음.(정해진 규격)
출처 : http://www.techjava.de/topics/tag/maven/
Maven
Gradle
개발적 친화적 + CoC
즉, Ant와 Maven의 장점만을 취함
ant : flexibility / full control / chaining of targets
ivy : dependency management
maven : convention over configuration / multimodule projects / extensibility via plugins
gant : Groovy DSL(Domain specific language) on top of Ant
Gradle - 개발자 친화적 - Task
Groovy(JVM Language) DSL
Gradle - CoC-Task
Gradle - 기타 장점
● Gradle Wrapper 제공
● 상속이 아닌 주입
● 다른 빌드툴 호환
● 멀티 프로젝트를 간단히 작성할 수 있음

More Related Content

What's hot

[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현NAVER Engineering
 
Google app engine
Google app engineGoogle app engine
Google app enginescor7910
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring bootChloeChoi23
 
실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것Hyun-Seok Lee
 
메이븐파헤치기(김우용)
메이븐파헤치기(김우용)메이븐파헤치기(김우용)
메이븐파헤치기(김우용)우용 김
 
Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]Woojin Joe
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)중선 곽
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationDonghyun Seo
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, VueGunhee Lee
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축Heo Seungwook
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디소라 정
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.장현 한
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁WebFrameworks
 
[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...
[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...
[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...Jung Hyun Nam
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔NAVER D2
 

What's hot (19)

Maven
MavenMaven
Maven
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 
Google app engine
Google app engineGoogle app engine
Google app engine
 
Cygnus unit test
Cygnus unit testCygnus unit test
Cygnus unit test
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring boot
 
실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것
 
메이븐파헤치기(김우용)
메이븐파헤치기(김우용)메이븐파헤치기(김우용)
메이븐파헤치기(김우용)
 
Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
 
deview2014
deview2014deview2014
deview2014
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁
 
[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...
[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...
[BRK40017] 기존 IIS/ASP.NET 쇼핑몰 애플리케이션을 Kubernetes로 옮기기 / Move your existing II...
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 

Similar to Java Build Tool

maven 소개
maven 소개maven 소개
maven 소개Suan Lee
 
빌드교육자료 작성중
빌드교육자료 작성중빌드교육자료 작성중
빌드교육자료 작성중Sukjin Yun
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해중선 곽
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
Gradle 한번 살펴보기
Gradle 한번 살펴보기Gradle 한번 살펴보기
Gradle 한번 살펴보기Junseo Youn
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradle안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradlehaesunglee5
 
스프링 프로젝트 시작하기
스프링 프로젝트 시작하기스프링 프로젝트 시작하기
스프링 프로젝트 시작하기Ashal aka JOKER
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java ProjectJi-Woong Choi
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GDG Korea
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startupJunHo Yoon
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Nanha Park
 
TechTalk - 개발환경설정 이야기
TechTalk - 개발환경설정 이야기TechTalk - 개발환경설정 이야기
TechTalk - 개발환경설정 이야기Daesung Park
 
원모먼트 Vue js 적용기
원모먼트 Vue js 적용기원모먼트 Vue js 적용기
원모먼트 Vue js 적용기우현 김
 
Mastering devops with oracle 강인호
Mastering devops with oracle 강인호Mastering devops with oracle 강인호
Mastering devops with oracle 강인호Inho Kang
 

Similar to Java Build Tool (20)

maven 소개
maven 소개maven 소개
maven 소개
 
Gradle 소개
Gradle 소개Gradle 소개
Gradle 소개
 
okspring3x
okspring3xokspring3x
okspring3x
 
빌드교육자료 작성중
빌드교육자료 작성중빌드교육자료 작성중
빌드교육자료 작성중
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
Gradle 한번 살펴보기
Gradle 한번 살펴보기Gradle 한번 살펴보기
Gradle 한번 살펴보기
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradle안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradle
 
스프링 프로젝트 시작하기
스프링 프로젝트 시작하기스프링 프로젝트 시작하기
스프링 프로젝트 시작하기
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startup
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
 
TechTalk - 개발환경설정 이야기
TechTalk - 개발환경설정 이야기TechTalk - 개발환경설정 이야기
TechTalk - 개발환경설정 이야기
 
원모먼트 Vue js 적용기
원모먼트 Vue js 적용기원모먼트 Vue js 적용기
원모먼트 Vue js 적용기
 
Android QA Process
Android QA ProcessAndroid QA Process
Android QA Process
 
Mastering devops with oracle 강인호
Mastering devops with oracle 강인호Mastering devops with oracle 강인호
Mastering devops with oracle 강인호
 

Java Build Tool

  • 1. Ant & Maven & Gradle 양파지기 스터디 모임 권용근
  • 2. Ant, Maven, Gradle?? Maven, Gradle, Ant, Ivy = Java Build Tool
  • 3. Java Build Tool? 컴파일 소스코드를 사용할 수 있는 실행 파일로 변환 빌드 빌드 > 컴파일 컴파일, 테스팅, 점검, 배포 소스의 컴파일을 포함해 어플리케이션을 사용할 수 있는 형태로 만들어주는 과정. 소프트웨어가 응집력있는 하나의 단위로써 잘 동작하는지 확인하는 과정.
  • 4. Ant, Maven, Gradle?? 2002 2012 2000 2004 출처 : https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
  • 5. Ant, Maven, Gradle?? 출처 : https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
  • 6. Ant 완전 개발자 친화적 ● 정해진 규칙, 프로세스 X ● 모든 것을 개발자가 정의 ● Task 중심 Ant 자체는 XML이나 Remote Repository(Dependency)를 사용할 수 없음 그래서 +
  • 7. Maven Strong convention but hard to implement custom logic 규칙, 프로세스가 뚜렷하게 정의, 그러나 맞춤 로직을 구현하기 어렵다 CoC, Convention over Configuration 명확한 관습으로 인해 더 편해진다는 의미
  • 8. Maven - 핵심 의존성(Dependency) 라이프사이클 플러그인(모조) Pom.xml
  • 9. Maven - 의존성 라이브러리 다운로드 자동(원격 저장소로부터)
  • 10. Maven - Plugin, Mojo Maven은 Plugin을 실행하는 프레임워크 Goal(Mojo) 들의 집합
  • 11. Maven - 라이프사이클 Goal들의 단계를 정의 하나의 Goal은 하나 이상의 라이프사이클에 속하게 됨. 라이프사이클은 단계일 뿐 실제 실행되는 것은 플러그인.
  • 12. Maven - Pom.xml Project Object Model 프로젝트 자체와 의존성에 대한 설정 및 정보를 포함 그룹 ID, 아티펙트 ID, 버전으로 자원 식별 다양한 설정이 있음.(정해진 규격)
  • 14. Gradle 개발적 친화적 + CoC 즉, Ant와 Maven의 장점만을 취함 ant : flexibility / full control / chaining of targets ivy : dependency management maven : convention over configuration / multimodule projects / extensibility via plugins gant : Groovy DSL(Domain specific language) on top of Ant
  • 15. Gradle - 개발자 친화적 - Task Groovy(JVM Language) DSL
  • 17. Gradle - 기타 장점 ● Gradle Wrapper 제공 ● 상속이 아닌 주입 ● 다른 빌드툴 호환 ● 멀티 프로젝트를 간단히 작성할 수 있음