SlideShare a Scribd company logo
1 of 10
Download to read offline
Introduction Gradle
Technical
Index
• Build-Tool
• Evolution & 2016 Usage Status Build
Tool
• Gradle?
• Gradle의 주요 특징
• Gradle 장,단점
• Ant, Maven, Gradle
• Maven, Gradle Build Script
• Links
• 빌드 ? 작성코드 + 의존성 라이브러리 → 컴파일 Compile → 패키징 Packaging
• 빌드 툴 ? 소스코드 컴파일 / 테스트 / 패키징 / 배포 / 문서화 하는 작업을 지원하는 툴
Java Build Tool
Build Tool
Evolution & 2016 Usage Status Build Tool
• 2000 - Ant
• 2002 - Maven
• 2004 - Ivy
• 2012 - Gradle
2016년 Java 빌드 툴 사용 현황
• Maven의 비율의 가장 높음
• 신규 프로젝트의 경우 대다수 Gradle 사용
참조 : https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/
참조 : https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
Gradle?
Gradle은 범용 빌드 툴 - Java, Java web, C, C++, Android … 20여 가지 언어 지원
• Groovy 언어 기반 (JVM 기반, 자바+파이썬+루비+스몰토크를 더한 동적 객체 지향 프
로그래밍 언어)
• Ant와 Maven을 계승, Ant(유연함) + Maven(체계성) + 스크립트 언어 (Groovy)
• Ant 와 Maven 빌드 툴 모두 가지고 있었던 가장 큰 단점인 XML 에 대한 이슈 Groovy
언어를 사용해 해결 (XML을 사용하지 않음)
∴ Gradle == 개발자 친화적(자유도) + CoC(Convention over Configuration)
- 명확한 관습으로 인해 더 편해진다.
Gradle의 주요 특징
• Groovy(JVM Language)를 기반으로 한 DSL (Domain Specific Language)
• Maven처럼 관례(Convention)에 기반한 프레임워크, 그러면서도 그 관례를 마음껏 바꿀 수 있다
• 다양하고 자유도가 높은 API 제공
• 심플한 프로젝트에서 거대한 엔터프라이즈 환경의 멀티 프로젝트 빌드까지 지원하는 확장성
• Ant 태스크와 빌드가 기본적으로 탑재 (기존에 작성된 Ant Task를 Gradle에서 직접 호출 가능)
• 기존의 어떠한 구조의 프로젝트라도 Gradle로의 통합 및 쉬운 마이그레이션
• 원격 레퍼지토리나 pom.xml, ivy.xml 도움 없이 이행적(transitive) 의존성 관리를 지원
• Gradle Wrapper를 사용하여 Gradle 이 설치되지 않은 환경에서 빌드 실행 가능
• Groovy 기반의 빌드 스크립트를 사용함으로써 third party libraries를 포함시키고 커스트마이즈 할 수 있다.
• 아파치 2.0 라이선스 (오픈소스 제공)
• Build scrip는 xml이 아닌 Groovy로 작성
Gradle 장, 단점
1. 간결함 : xml을 사용하지 않기때문에 장황하지 않음.
2. 속도 : 성능 향상을 위해 증분 빌드, 작업 결과 캐싱, 증분 하위 작업, 병렬 실행 등을 제공.
3. 멀티프로젝트 : 하나의 repository내에 여러 개의 하위 프로젝트 구성 가능. (상속x, 주입o)
4. 유연성 + 확장성 : 직접 Task 구현과 플러그인을 만들어서 기능을 추가 할 수 있음.
5. 플러그인 생태계 : 플러그인 관리를 위한 허브가 있고 그 안에는 수많은 플러그인이 존재.
• 장점
• 단점
1. Maven보다 컴파일/빌드 속도가 느리다.
2. IDE의 지원이 다소 미흡
3. 메모리 사용량이 많다. (권장 메모리 8GB, 4GB 메모리 사용시 Out of memory 발생 가능)
4. 이행적 의존성(transitive dependency) 충돌로 인해 자신도 모르게 지정한 것보다 높은
버전의 라이브러리를 받아오는 현상이 있음.(단점 이라기 보다는 Gradle의 의도)
Ant, Maven, Gradle (eclipse project directory structure)
• Ant • Maven • Gradle
Maven, Gradle Build Script
Maven의 pom.xml과 Gradle의 build.gradle
• Maven의 경우 사용자 지정 빌드 스크립트를 사용하기
힘들고 프로젝트의 규모가 커질 수록 코드라인이 길어짐
• Gradle의 Build Script는 Maven 보다 짧고 가독성이 좋음
Links
• https://gradle.org/
• https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/
• https://www.slideshare.net/ihoneymon/gradle-27152839
• https://www.slideshare.net/sup2rior/gradle-guide-v-01-31412469
• https://www.slipp.net/wiki/pages/viewpage.action?pageId=11632748
• https://www.slideshare.net/ssuser59a869/java-build-tool
• https://medium.com/@goinhacker/%EC%9A%B4%EC%98%81-
%EC%9E%90%EB%8F%99%ED%99%94-1-%EB%B9%8C%EB%93%9C-
%EC%9E%90%EB%8F%99%ED%99%94-by-gradle-7630c0993d09

More Related Content

What's hot

Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Sung-tae Ryu
 
Android Webkit Browser Plug-in
Android Webkit Browser Plug-inAndroid Webkit Browser Plug-in
Android Webkit Browser Plug-in
Seiyon Lee
 
그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기
Sangkyoon Nam
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
NAVER Engineering
 

What's hot (20)

gradle로 안드로이드 앱 빌드하기
gradle로 안드로이드 앱 빌드하기gradle로 안드로이드 앱 빌드하기
gradle로 안드로이드 앱 빌드하기
 
양파지기 - Ant, Maven, Gradle
양파지기 - Ant, Maven, Gradle양파지기 - Ant, Maven, Gradle
양파지기 - Ant, Maven, Gradle
 
Gradle 사용하기
Gradle 사용하기Gradle 사용하기
Gradle 사용하기
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망
 
[오픈소스컨설팅]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
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App Development
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
Android Webkit Browser Plug-in
Android Webkit Browser Plug-inAndroid Webkit Browser Plug-in
Android Webkit Browser Plug-in
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈
 
[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
 
Java Build Tool
Java Build ToolJava Build Tool
Java Build Tool
 
그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기
 
Gradle 한번 살펴보기
Gradle 한번 살펴보기Gradle 한번 살펴보기
Gradle 한번 살펴보기
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
2022 백엔드 멘토링 자료
2022 백엔드 멘토링 자료2022 백엔드 멘토링 자료
2022 백엔드 멘토링 자료
 
우아한오픈소스
우아한오픈소스우아한오픈소스
우아한오픈소스
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
 
2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 

Similar to Gradle 소개

Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
uEngine Solutions
 
클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012
Daum DNA
 
구름 기본 소개자료
구름 기본 소개자료구름 기본 소개자료
구름 기본 소개자료
웅식 전
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
devCAT Studio, NEXON
 

Similar to Gradle 소개 (20)

Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
Goorm
GoormGoorm
Goorm
 
클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 
Mastering devops with oracle 강인호
Mastering devops with oracle 강인호Mastering devops with oracle 강인호
Mastering devops with oracle 강인호
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
Golang Restful 서버 개발기
Golang Restful 서버 개발기Golang Restful 서버 개발기
Golang Restful 서버 개발기
 
지금 우리에게 필요한 것은
지금 우리에게 필요한 것은지금 우리에게 필요한 것은
지금 우리에게 필요한 것은
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
구름 기본 소개자료
구름 기본 소개자료구름 기본 소개자료
구름 기본 소개자료
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
 
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
 

Gradle 소개

  • 2. Index • Build-Tool • Evolution & 2016 Usage Status Build Tool • Gradle? • Gradle의 주요 특징 • Gradle 장,단점 • Ant, Maven, Gradle • Maven, Gradle Build Script • Links
  • 3. • 빌드 ? 작성코드 + 의존성 라이브러리 → 컴파일 Compile → 패키징 Packaging • 빌드 툴 ? 소스코드 컴파일 / 테스트 / 패키징 / 배포 / 문서화 하는 작업을 지원하는 툴 Java Build Tool Build Tool
  • 4. Evolution & 2016 Usage Status Build Tool • 2000 - Ant • 2002 - Maven • 2004 - Ivy • 2012 - Gradle 2016년 Java 빌드 툴 사용 현황 • Maven의 비율의 가장 높음 • 신규 프로젝트의 경우 대다수 Gradle 사용 참조 : https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/ 참조 : https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
  • 5. Gradle? Gradle은 범용 빌드 툴 - Java, Java web, C, C++, Android … 20여 가지 언어 지원 • Groovy 언어 기반 (JVM 기반, 자바+파이썬+루비+스몰토크를 더한 동적 객체 지향 프 로그래밍 언어) • Ant와 Maven을 계승, Ant(유연함) + Maven(체계성) + 스크립트 언어 (Groovy) • Ant 와 Maven 빌드 툴 모두 가지고 있었던 가장 큰 단점인 XML 에 대한 이슈 Groovy 언어를 사용해 해결 (XML을 사용하지 않음) ∴ Gradle == 개발자 친화적(자유도) + CoC(Convention over Configuration) - 명확한 관습으로 인해 더 편해진다.
  • 6. Gradle의 주요 특징 • Groovy(JVM Language)를 기반으로 한 DSL (Domain Specific Language) • Maven처럼 관례(Convention)에 기반한 프레임워크, 그러면서도 그 관례를 마음껏 바꿀 수 있다 • 다양하고 자유도가 높은 API 제공 • 심플한 프로젝트에서 거대한 엔터프라이즈 환경의 멀티 프로젝트 빌드까지 지원하는 확장성 • Ant 태스크와 빌드가 기본적으로 탑재 (기존에 작성된 Ant Task를 Gradle에서 직접 호출 가능) • 기존의 어떠한 구조의 프로젝트라도 Gradle로의 통합 및 쉬운 마이그레이션 • 원격 레퍼지토리나 pom.xml, ivy.xml 도움 없이 이행적(transitive) 의존성 관리를 지원 • Gradle Wrapper를 사용하여 Gradle 이 설치되지 않은 환경에서 빌드 실행 가능 • Groovy 기반의 빌드 스크립트를 사용함으로써 third party libraries를 포함시키고 커스트마이즈 할 수 있다. • 아파치 2.0 라이선스 (오픈소스 제공) • Build scrip는 xml이 아닌 Groovy로 작성
  • 7. Gradle 장, 단점 1. 간결함 : xml을 사용하지 않기때문에 장황하지 않음. 2. 속도 : 성능 향상을 위해 증분 빌드, 작업 결과 캐싱, 증분 하위 작업, 병렬 실행 등을 제공. 3. 멀티프로젝트 : 하나의 repository내에 여러 개의 하위 프로젝트 구성 가능. (상속x, 주입o) 4. 유연성 + 확장성 : 직접 Task 구현과 플러그인을 만들어서 기능을 추가 할 수 있음. 5. 플러그인 생태계 : 플러그인 관리를 위한 허브가 있고 그 안에는 수많은 플러그인이 존재. • 장점 • 단점 1. Maven보다 컴파일/빌드 속도가 느리다. 2. IDE의 지원이 다소 미흡 3. 메모리 사용량이 많다. (권장 메모리 8GB, 4GB 메모리 사용시 Out of memory 발생 가능) 4. 이행적 의존성(transitive dependency) 충돌로 인해 자신도 모르게 지정한 것보다 높은 버전의 라이브러리를 받아오는 현상이 있음.(단점 이라기 보다는 Gradle의 의도)
  • 8. Ant, Maven, Gradle (eclipse project directory structure) • Ant • Maven • Gradle
  • 9. Maven, Gradle Build Script Maven의 pom.xml과 Gradle의 build.gradle • Maven의 경우 사용자 지정 빌드 스크립트를 사용하기 힘들고 프로젝트의 규모가 커질 수록 코드라인이 길어짐 • Gradle의 Build Script는 Maven 보다 짧고 가독성이 좋음
  • 10. Links • https://gradle.org/ • https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/ • https://www.slideshare.net/ihoneymon/gradle-27152839 • https://www.slideshare.net/sup2rior/gradle-guide-v-01-31412469 • https://www.slipp.net/wiki/pages/viewpage.action?pageId=11632748 • https://www.slideshare.net/ssuser59a869/java-build-tool • https://medium.com/@goinhacker/%EC%9A%B4%EC%98%81- %EC%9E%90%EB%8F%99%ED%99%94-1-%EB%B9%8C%EB%93%9C- %EC%9E%90%EB%8F%99%ED%99%94-by-gradle-7630c0993d09