2. Accelerate developer productivity
From mobile apps to microservices, from small startups to big enterprises,
Gradle helps teams build, automate and deliver better software, faster.
3. Gradle?
Gradle is an open-source build automation tool focused on flexibility and
performance.Gradle build scripts are written using a Groovy or Kotlin DSL
• Highly customizable — Gradle is modeled in a way that customizable and
extensible in the most fundamental ways.
• Fast — Gradle completes tasks quickly by reusing outputs from previous
executions, processing only inputs that changed, and executing tasks in parallel.
• Powerful — Gradle is the official build tool for Android, and comes with support
for many popular languages and technologies.
4. DSL(Domain Specific Language)?
• 특정 도메인(산업, 분야등 특정 영역)에 특화된 언어를 말한다. 특정 영역의
문제 해결에는 그 영역에 맞는 특화된 도구를 사용하자라는 것이다.
• "문제 영역의 해결에는 그 영역의 언어를 전제로 둬야하며, 거기에서 프로
그래밍 솔루션을 꺼내는 것이 중요하다." - Dave Thomas
5. Groovy?
• 자바 가상 머신에서 작동하는 동적 타이핑 프로그래밍 언어이다.
• 그루비(Groovy)는 자바에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객
체 지향 프로그래밍 언어이다.
• 자바에는 없는 간편 표기법(syntactic sugar)을 지원하는 외에 리스트, 맵, 정
규식을 위한 구문을 제공함으로써 프로그래밍을 쉽고 간결하게 해 준다.
7. 빌드 자동화
• 빌드 자동화의 본질적 목적은 소프트웨어 개발자가 반복해서 하는 코딩을
잘 짜여진 프로세스를 통해 자동으로 실행하여, 믿을 수 있는 결과물도 생산
해 낼 수 있는 일련의 작업방식 및 방법을 말한다.
• 지속적인 통합(continuous Integration)과도 일맥상통되는 의미다.
8. 지속적인 통합(Continuous Integration)
• 팀의 구성원들이 자신들의 작업을 각자 하루에 적어도 한 번씩 통합하는 소
프트웨어 개발 프랙티스를 의미한다.
• 반복가능하고 오류가 발생하기 쉬운 프로세스를 자동화하여 소프트웨어 통
합을 별 것 아닌 일로 만들고자 하는 것이 목적이며, 이를 위해서는 빌드 프
로세스 및 테스트 자동화 환경을 만드는 것이다.
10. 배포 파이프라인(Deployment Pipeline)
• 소프트웨어를 버전 관리 시스템으로부터 사용자에게 전달하는 프로세스의
자동화된 모습을 의미한다.
• 단대단(end-to-end) 자동화를 빌드, 배포, 테스트, 출시 프로세스에 적용하면
고품질의 복잡한 시스템을 지금까지의 경험에 비해 비용과 위험도를 확연히
낮춰 생산, 테스트, 배포를 할 수 있는데 이것이 바로 배포 파이프라인의 목
적이다.
13. 지속적인 인도(Continuous Delivery)
• 소프트웨어가 언제든지 릴리즈될 수 있는 방식으로 소프트웨어를 구축하
는 소프트웨어 개발 분야를 의미한다.
• 애자인 선언의 첫 번째 원칙인 ‘최상위의 목적은 빠르고 지속적으로 가치 있
는 소프트웨어를 인도함으로써 고객을 만족시키는 것이다.’라는 개념을 이루
는 것이 목적이며, 이를 위해서는 기본적으로 지속적인 통합 및 배포 파이프
라인를 구축해야 한다.
15. Installing Gradle-2
• gradlew 파일은 유닉스용 실행 스크립트다. Gradle로 컴파일이나빌드 등을 할때, 아래와 같이 하면 로컬에 설치된
gradle을 사용한다.
• gradlew.bat 파일은 원도우용 실행 배치 스크립트다. 원도우에서 실행 가능하다는 점만 제외하면 gradlew와 동일
하다.
• gradle/wrapper/gradle-wrapper.jar 파일은 Wrapper 파일이다. gradlew나 gradlew.bat 파일이 프로젝트 내에 설치
하는 이 파일을 사용하여 gradle task를 실행하기 때문에 로컬 환경의 영향을 받지 않는다.
• gradle/wrapper/gradle-wrapper.properties 파일은 Gradle Wrapper 설정 파일이다. 이 파일의 wrapper 버전 등을
변경하면 task 실행시, 자동으로 새로운 Wrapper 파일을 로컬 캐시에 다운로드 받는다.
• build.gradle 파일은 의존성이나 플러그인 설정 등을 위한 스크립트 파일이다.
• settings.gradle 파일은 프로젝트의 구성 정보를 기록하는 파일이다. 어떤 하위프로젝트들이 어떤 관계로 구성되어
있는지를 기술한다. Gradle은 이 파일에 기술된대로 프로젝트를 구성한다.
#4:DSL이란특정 도메인(산업, 분야등 특정 영역)에 특화된 언어를 말한다. "문제 영역의 해결에는 그 영역의 언어를 전제로 둬야하며, 거기에서 프로그래밍 솔루션을 꺼내는 것이 중요하다." 라고 Dave Thomas가 한 말을 생각하면 이해하기 쉽다.특정 영역의 문제 해결에는 그 영역에 맞는 특화된 도구를 사용하자라는 것이다. 어찌보면 과도로 끝내도 될 일을 맥가이버칼을 들이대는 격이다. 그리고 표현 방식은 해당 도메인의 전문가가 이해할 수 있는 형태(고급 언어)여야 한다.
#6:자바 소스는 컴파일해야만 사용할 수 있지만, 그루비 소스는 스크립트 파일 그대로 실행시킬 수도 있고, 자바처럼 컴파일하여 쓸 수도 있다. 거의 대부분의 자바 소스는 파일 확장자만 바꾸면 수정 없이 그루비에서도 쓸 수 있다.
#8:소스를 실행 시스템으로 전환하는 과정은 컴파일, 파일 삭제, 데이타베이스 스키마 로딩등의 작업을 포함하는 복잡한 프로세스가 되기도 한다. 하지만 이 소프트웨어 개발 과정 중 이 부문의 많은 타스크들은 자동화 할 수 있으며, 반드시 자동화해야 한다. 사람들에게 생소한 명령어를 치게 하거나, 대화창을 클릭하게하는 것은 시간낭비이며, 많은 실수를 유발시킨다.
자동화된 빌드 환경은 시스템의 일반적으로 갖추어야 할 요건이다. 유닉스 분야에서는 이미 십여년 동안 make를 사용해 오고 있다. 자바커뮤니티는 Ant를 내놓았다. .NET 커뮤니티는 Nant를 사용하다가, 이제는 MSBuild를 이용한다. 단일 명령으로 이러한 스크립트를 실행시켜 여러분들의 시스템을 빌드하고 런치할 수 있도록 해야 한다.
#13:전형적인 배포 파이프라인으로 필수 접근 방법을 담고 있다. 물론 실제 파이프라인은 프로젝트의 실제 소프트웨어 전달 프로세스를 반영한다.
#14:지속적인 인도 개념을 프로젝트에 도입하기 위해서는 해당 프로젝트의 개발 및 운영 환경을 구축하고, 지속적인 통합 환경과 배포 파이프라인을 적용할 수 있는 배포 절차를 마련하는 것이 중요하다.
#15:Gradle Wrapper를 사용하는 목적은 이미 존재하는 프로젝트를 새로운 환경에 설치할때 별도의 설치나 설정과정없이 곧 바로 빌드할 수 있게 하기 위함이다. Java나 Gradle도 설치할 필요가 없다. 또한 로컬에 설치된 Gradle 또는 Java의 버전도 신경쓸 필요가 없다. 따라서 항상 Wrapper를 사용할 것을 권장한다.
#16:Gradle Wrapper를 사용하는 목적은 이미 존재하는 프로젝트를 새로운 환경에 설치할때 별도의 설치나 설정과정없이 곧 바로 빌드할 수 있게 하기 위함이다. Java나 Gradle도 설치할 필요가 없다. 또한 로컬에 설치된 Gradle 또는 Java의 버전도 신경쓸 필요가 없다. 따라서 항상 Wrapper를 사용할 것을 권장한다.