참고
빌드란?
NOTE
소스코드 및 프로젝트에서 쓰인 각각의 파일을 컴퓨터에서 실행할 수 있는(JVM이나 WAS가 인식할 수 있는) 독립적인 형태로 변환하는 과정과 결과를 말한다!
•
라이브러리 추가, 버전 동기화에 특화적이다.
빌드도구
NOTE
•
소프트웨어 개발에 있어서 소스 코드를 실행가능한 애플리케이션으로 만들어주는 도구
•
빌드 과정을 자동화하여 관리하는 기능을 하기 떄문에 빌드 관리 도구라고 한다.
특징
•
개발자가 스크립트를 작성하여 다양한 작업을 수행할 수 있다.
◦
소스 코드 컴파일, 패키징
◦
테스트 자동수행
◦
의존성 주입 및 배포작업
•
빌드도구 종류에 따라 스크립트 작성 문법이다르다.
◦
XML
◦
Groovy
빌드도구 종류와 차이점(Ant, Maven, Gradle)
NOTE
1. 앤트(Ant)
•
초기 자바 프로젝트 빌드로서 가장 널리 사용됨
•
XML 스크립트 기반
•
최근 빌드도구와 달리, 라이브러리 업데이트가 안됨
2. 메이븐(Maven)
•
Ant이후에 나온 자바 빌드 도구
•
XML 스크립트 기반, pom.xml 파일로 의존성을 관리한다.
•
Maven에서는 라이프 사이클개념이 도입되어 빌드 순서 정할 수 있음
3. 그래들(Gradle)
•
가장 최근에 나온 빌드 도구
•
Groovy 기반, Build.gradle에 스크립트를 작성한다.
◦
대규모 프로젝트에서 XML기반에 비해 관리하기 편한 장점이 있다.
◦
안드로이드 프로젝트의 표준 빌드 시스템으로 채택됨
Gradle을 사용해야 하는 이유
NOTE
1. 간결한 스크립트
•
Gradle이전의 Ant, Maven은 XML기반이라 닫는태그를 넣어야 해서 가독성이 떨어졌다.
•
Gradle은 Groovy 문법으로 간결하게 작성이 가능하다.
2. 빌드속도
최대 100배까지 벌어질 수 있다고한다.
•
프로젝트 규모가 커질수록 빌드 속도는 굉장히 중요해진다.
•
Gradle은 캐싱(caching)을 하기 때문에 Ant나 Maven 같은 빌드도구보다 빠르다!
3. 멀티 프로젝트 빌드
•
대규모 자바 프로젝트는 대부분 다중 모듈로 구성된다.
•
즉 하나의 프로젝트 안에서 여러 모듈이 동시에 개발된다!
•
Gradle의 멀티 프로젝트 빌드 기능을 이용하여 이러한 번거로움을 줄일 수 있다.
Gradle
NOTE
Gradle은 Groovy 언어를 기반으로 한 오픈소스 빌드 도구이다.
gradle 붙은거만 몇개여..
•
Groovy기반의 DSL(Domain Specific Language)를 사용한다.
•
Gradle 설치 없이 Gradle Wrapper를 이용해 빌드 지원.
gradle warpper
NOTE
폴더구조
•
이미 존재하는 프로젝트를 새로운 환경에서 별도의 설치 없이 곧바로 빌드할 수 있음!
•
Java나 Gradle도 설치할 필요가 없다!(버전도 신경쓸 필요없음)
•
wrapper는 사용자가 Gradle이 설치되어 있지 않아도 Gradle task를 실행할 수 있도록 해주는 작은 script, jar 및 등록 정보 파일
gradle-wrapper.jar
•
Wrapper 파일
•
gradlew나 gradlew.bat 파일이 프로젝트 내에 설치하는 이 파일을 사용하여 gradle task를 실행하기 때문에, 로컬 환경의 영향을 받지 않음.
•
(실제로는 Wrapper 버전에 맞는 구성들을 로컬 캐시에 다운로드 받음)
gradle-wrapper.properties
•
Graddel Wrapper 설정파일
•
이 파일의 wrapper 버전 등을 변경하면 task 실행시, 자동으로 Wrapper 파일을 로컬 캐시에서 다운로드 받음
gradlew, gradle.bat
NOTE
폴더구조
gradlew(유닉스), gradlew.bat(윈도우)
•
Gradle로 컴파일 또는 빌드할 때, 아래와 같이 하면 로컬에 설치된 gradle 사용
./gradlew build
Groovy
복사
build.gradle, settings.gradle
NOTE
build.gradle
•
의존성이나 플러그인 설정 등을 위한 스크립트 파일
settings.gradle
•
프로젝트의 구성 정보를 기록하는 파일
•
어떤 하위 프로젝트들이 어떤 관계로 구성되어 있는지 기술
•
Gradle은 이 파일에 기술된대로 프로젝트를 구성