Gradle의 모든 포스팅은 유튜브 프리렉을 기반으로 작성되었습니다.
링크 : https://www.youtube.com/watch?v=s-XZ5B15ZJ0&list=PL7mmuO705dG2pdxCYCCJeAgOeuQN1seZz
7. 그레이들의 스크립트 파일(1)
그루비(Groovy) : http://groovy-lang.org/
The Apache Groovy programming language
May 26-28, 2021 For the past 12 years, GR8Conf has provided a high-quality conference experience for the tight-knit Apache Groovy programming language community. This year, we are joining forces with JDK IO - an annual conference run by the Danish Java use
groovy-lang.org
Gradle은 Groovy의 문법 구조를 따르고 있다.(자바를 학습한 사람들은 쉽게 이해할 수 있다.)
Groovy도 JAVA와 다르게 특징적인 문법 부분을 가지고 있다.
그루비는 자바 플랫폼을 기반으로한 스크립트 언어이다.
JVM에서 동작하고 DSL에 의해서 확장성이 좋은 언어라고 할 수 있다.
자바처럼 소스코드를 컴파일해서 클래스를 생성할 수 도있고
컴파일을 거치지 않고 직접 실행해서 스크립트로서 사용도 가능하다
또한 그루비 문법은 자바와 호환이 되서 자바로 작성된 소스코드를 그루비에서 활용이 가능하다.
그루비에서 자바 라이브러리를 호출해서 사용하거나 그루비의 라이브러리를 자바에서 호출해서 사용할 수 있다.
7. 그레이들의 스크립트 파일(2)
자바에서와 같이 형지정을 통해서 변수를 선언할 수 있지만
Groovy에서는 def를 사용하여 형지정을 하지않고 선언 가능
- 그루비 - def 형 사용
// 자바와 같이 형 지정
String id = 'gradle'
// 형 지정 생략(Groovy의 형 지정 특징)
def id = 'gradle'
println id.toUpperCase() // 속성 참조 가능
메소드에서 매개변수의 형을 지정하지 않았다면, 내부적으로 def로 인식되어 사용된다.
def형은 객체의 메소드나 속성등을 명시적으로 지정할 때에도 참조가 가능하다.
- 그루비 - 문자열 사용
def id = "ID : ${project.id}"
String id = "ID : $id" // {} 생략가능
def id = '''gradle
Groovy
script'''
def id = """gradle
Groovy
script"""
Groovy에서 문자열을 사용할 때는 작은따옴표와 큰 따옴표를 사용할 수 있는데, 그 쓰임이 다르다.
작은 따옴표 : 자바에서와 같이 문자열을 지정할 때 사용
큰 따옴표 : { } 안에 동적으로 값을 지정해서 받을 수 있도록 사용
'''내용들''' """내용들""" 의 형식으로 여러개의 문자열을 겹쳐서 사용할 수 있다.
- 그루비 - 클로저 사용
// task 정의 시 클로저
task hello<< {
println "Hello Gradle!"
}
// 클로저 사용
def id = { close -> println "id, $closer" }
// call() 이용한 사용
id.call('gradle')
// 일반 메서드 호출 방식 사용
id('gradle')
// 괄호를 생략하고 사용
id 'gradle'
그레이들의 스크립트를 작성하다보면 { }로된 클로저가 있습니다.
바로 이 { }를 사용한 부분이 클로저 입니다.
- 그루비 - 리스트와 맵
- 리스트(list)
그루비에서의 리스트는 배열처럼 사용할 수 있다.
// 리스트(list)
def id = ['gradle', 'Groovy']
id[1] = 'script'
- 맵(Map)
키값을 사용할 수 있다.
// 맵(Map)
def id = ['a':'gradle', 'b':'Groovy']
assert id['a'] == 'gradle'
Gradle은 Groovy를 기반으로 한 언어이기 때문에 간단히 알아두어야 한다.
더 궁금한 부분이 있다면 상단의 그루비 홈페이지 등에서 학습해보자.
7. 그레이들의 스크립트 파일(3)
그레이들의 스크립트 파일 구조
// 처리문
def id = 'gradle'
// 스크립트 블록
repositories{
mavenCentral()
}
task idCheck<<{
def id = 'check'
println 'id : ' + id
}
그레이들의 스크립트 파일은 두가지로 구성되어 있다.
처리문 영역, 처리문에 대한 스크립트 블록
처리문 영역 : 변수등을 선언하는 부분
스크립트 블록 : repositories 블록, task를 생성하는 블록
그레이들의 주요 스크립트 블록
스크립트 블록 | 주요내용 |
repositories | 저장소 설정 |
dependencies | 의존 관계 설정 |
buildscript | 빌드 스크립트 클래스 패스 설정 |
initscript | 초기화 스크립트 설정 |
configurations | 환경 구성 설정 |
allprojects | 서브 프로젝트 포함 전체 프로젝트 설정 |
subprojects | 서브 프로젝트 설정 |
artifacts | 빌드 결과에 대한 설정 |
그레이들의 변수
변수 | 설명 | 사용 범위 |
지역 변수 | 선언된 부분에서 영향력 있는 변수 | Gradle의 모든 스크립트 파일 |
시스템 속성 | 시스템 관련 정보를 저장하는 변수 | |
확장 속성 | 도메인 객체 확장 용도로 사용되는 변수 | |
프로젝트 속성 | 프로젝트에서 사용되는 변수 | 빌드스크립트 |
지역변수는 상단의 def id = 'gradle' 참고
그레이들의 변수- 시스템 속성 변수
시스템 속성은 시스템 관련 정보를 저장하기위한 변수로서,
명령어에서 인수로 전달하는 방법과
명령어 인수로 전달할 때에는 D옵션, system-prop옵션을 사용해서 전달한다
사용법은 위의 그림을 확인해보자
속성파일을 사용해서 속성파일의 systemProp을 통해여 전달하는 방법 두가지가 있다.
마찬가지로 사용법은 위의 그림 참조
그레이들의 변수 - 확장 속성 변수
// 확장 속성 지정 방법
ext{
extPro1 = 'pro1'
extPro2 = 'pro2'
}
// 사용방법
println '속성값 1 : '+ext.extPro1
println '속성값 2 : '+ext.extPro2
ext는 그레이들의 객체를 살펴보며 더 자세하게 다룰것.
참고로 ext는 그레이들이 제공하는 객체중에서 엑스트라 프로퍼티스 익스텐션 객체와 연관된 객체이다.
속성파일에서 속성 추가 방법
hello라는 task를 지정해서 명령어를 수행하면
gradle.properties에 정의되어 있는 Hi, Gradle!이 출력되는것을 확인할 수 있다.
명령어 인수로 프로젝트 속성 지정 방법
프로젝트 속성옵션을 사용할 때는
-P 옵션 또는 -project-prop 옵션을 사용한다.
로드 우선순위 | 프로젝트 속성 지정 방법 | 속성값 지정 |
1 | 프로젝트 디렉터리의 gradle.properties 지정 | 동일한 속성명으로 지정될 경우 로드 우선순위가 늦은 것에 대하여 지정 |
2 | 홈 디렉터리의 gradle.properties 지정 | |
3 | 환경 변수 지정 | |
4 | 명령어 옵션 지정 -D 옵션 | |
5 | 명령어 옵션 지정 -P 옵션 |
8. 그레이들 실습준비
- 메모장
- 이클립스 -'인디고(Indigo)'
- 안드로이드 스튜디오
- 인텔리 제이 (IntelliJ)
이클립스에 그레이들을 플러그인으로 설치해서 사용가능하다.
이클립스 상단 툴바의 Help - Eclipse Marketplace 클릭
gradle 검색 후 아래 이미지 참고하여 다운로드
다운로드 확인을 위해 프로젝트 생성
클릭 후 생성
Next 클릭
프로젝트 명 입력 Next
따로 설정하지 않고 Next
Finish를 누르면 프로젝트 생성 완료
생성 완료된 모습
'프로그래밍 공부 > Gradle' 카테고리의 다른 글
Gradle의 파일처리 파일관리 파일참조, 파일복사, 파일삭제 (0) | 2021.09.06 |
---|---|
Gradle의 도메인 객체 Project, Task, Gradle, Settings, 기타 (0) | 2021.09.05 |
Gradle의 태스크(task) 10. Gradle의 태스크 그래프 (0) | 2021.09.03 |
빌드란?, Gradle의 빌드, Gradle의 빌드 수행 (0) | 2021.09.01 |
Gradle이란? , Gradle 설치, Gradle 과 Maven (0) | 2021.08.31 |