Gradle이란?
그루비(Groovy)를 기반으로 한 빌드 자동화 도구. (개발지원에 중점을 둔 빌드 도구)
Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스 빌드 도구.
빌드 자동화란?
개발자가 반복해서 하는 코딩을 잘 짜여진 프로세스를 통해 자동으로 실행하여 결과물을 생산해 내는 일련의 작업 방법을 말한다. (CI)
(ex. 소스코드를 컨파일하고 jar,war 형태로 packing 해서 deploy 하는일을 자동화)
Gradle의 특징
그루비(Groovy) 기반의 언어를 사용한다.
자바 문법하고 비슷해서 자바 개발자가 쉽게 익힐 수 있는 장점이 있다.
(변수 선언, if/else, for 등 로직 구현가능)
Gradle Wrapper를 이용하면 Gradle이 설치되지 않는 시스템에서도 프로젝트를 빌드할 수 있다.
기본설정
$gradle init
기본구조
Gradlew : 유닉스용 실행 스크립트
Gradlew.bat : 윈도우용 실행 배치 스크립트
Gradle/wrapper/gradle-wrapper.jar : wrapper 파일.
- gradlew, gradlew.bat 파일이 실제로는 이 파일을 사용하여 gradle task를 실행하기 때문에 로컬 환경에 영향을 받지 않는다.
Gradle/wrapper/gradle-wrapper.properties : wrapper의 설정파일.
- 이 설정파일의 wrapper 버전 등을 변경하면, task 실행시에 자동으로 새로운 wrapper 파일을 로컬 캐시에 다운로드 받음.
Build.gradle : 의존성이나 플러그인 설정 등을 위한 스크립트 파일.
Settings.gradle : 프로젝트의 구성정보를 기록하는 파일.
- 프로젝트 구조의 최상위
- 최상위 프로젝트 이름 지정
빌드방법
$ gradle build
로컬에 설치된 Java, Gradle을 이용해서 빌드.
Build.gradle 예시 |
//Gradle에서 제공되는 기본 plugin이외의 직접 만든 plugin 기능이나 외부 plugin을 사용하고자 할때 추가로 정의 buildscript { //ext객체에 버전관리를 위한 전역변수 선언 ext { springBootVersion = '1.1.1' } repositories { //라이브러리를 가져오기 위한 저장소 설정 maven { url artifactory_contextUrl credentials { username artifactory_user password artifactory_password } } //플러그인을 가져오기 위한 저장소 설정 maven { url artifactory_gradlePluginUrl credentials { username user password password } } } //외부 라이브러리를 포함할 수 있는 classpath 설정 dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin : 'java' apply plugin : 'org.springframework.boot' apply plugin : 'io.spring.dependency-mangement' apply plugin : 'checkstyle' ... //checkstyle plugin안의 checkstyle 함수에 {} 클로저를 넘겨 속성 설정 checkstyle { toolVersion = '8.12' //버전 설정 configFile = file("${project.rootDir}/config/checkstyle.xml") //적용할 룰을 정의한 설정 파일 연결 ignoreFailures = true //빌드 시 소스코드가 룰에 어긋날 경우 빌드 에러 발생시키지 않음 } |
'IT Knowledge > 빌드도구' 카테고리의 다른 글
Jib개요 및 사용법(with maven, gradle) (6) | 2023.08.14 |
---|---|
Gradle install 방법 (2) | 2023.08.14 |
Maven Wrapper의 이해와 사용법 (0) | 2023.08.14 |
Maven 의 이해 (0) | 2023.08.14 |
Gradle increase read timeout 조치방안 (4) | 2022.06.17 |
댓글