2019. 10. 21. 20:47ㆍWeb/Gradle
이번 포스팅은 간단하게 Gradle Task를 작성하는 방법이다. 모든 경우의 Task 작성 방법을 다루지는 않지만 몇가지 예제를 다루어볼 것이다.
1
2
3
4
5
|
task hello{
doLast{
println 'Hello'
}
}
|
cs |
위는 간단하게 'Hello'라는 문자열을 출력하는 태스크이다. 아래 명령으로 실행시킨다.
1
2
3
4
5
|
gradle -q hello
result->
Hello
|
cs |
-q 옵션 같은 경우는 로그 출력없이 결과값만 출력하는 옵션이다. 만약 -q 옵션을 뺀다면 빌드에 걸린 시간등의 로그가 찍히게 된다.
디폴트 태스크 정의
gradle -q 라는 명령어로 실행하는 디폴트 태스크를 정의하는 방법이다. 보통 빌드전에 clean, install 등의 작업을 기계적으로 하는 경우가 많은데, 디폴트 태스크로 정의하여 사용하면 보다 간편하다.
1
2
|
//Default Task usecase : gradle -q
defaultTasks 'bye', 'variablePrint'
|
cs |
태스크간 의존성
다음은 태스크간 의존성을 설정하는 방법이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//Task 의존성설정
task bye{
dependsOn 'hello'
doLast{
println 'bye'
}
}
task hello{
doLast{
println 'Hello'
}
}
|
cs |
위 태스크는 bye를 실행하기 전에 hello Task를 실행시키는 의존성을 설정하였다.
1
2
3
4
5
6
|
gradle -q bye
rsult->
Hello
bye
|
cs |
태스크에서 변수사용 하기
태스크에서 사용자 정의 변수를 정의해서 사용가능하다. 결과값은 생략한다.
1
2
3
4
5
6
7
8
9
10
|
//변수사용방법
task variableTask{
ext.myProperty = 'testProperty'
}
task variablePrint{
doLast{
println variableTask.myProperty
}
}
|
cs |
사용자 정의 메서드 사용하기
gradle은 groovy, kotlin 스크립트를 이용한 빌드툴이다. 즉, 변수선언은 물론 메서드를 정의해서 사용가능하다.
1
2
3
4
5
6
7
8
9
10
|
//메서드 사용
task methodTask{
doLast{
printStr('method args')
}
}
String printStr(String arg){
println arg
}
|
cs |
빌드스크립트 자체에 의존성 라이브러리가 필요할 때
프로젝트가 사용하는 라이브러리는 물론, 빌드 스크립트 자체가 어떠한 외부 라이브러리가 필요할 때가 있다. 왜냐? gradle 자체는 groovy 언어로 작성하기 때문에 다른 외부 라이브러리를 사용가능하다!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/*
빌드스크립트 코드 자체가 외부 라이브러리를 필요로 할때
멀티 프로젝트 일 경우 루트 build.gradle에 선언하면
모든 하위 프로젝트 build.gradle에 반영된다.
*/
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
}
}
import org.apache.*
task encode{
doLast{
Base64.Encoder encoder = Base64.getEncoder()
println encoder.encode(variableTask.myProperty.getBytes())
}
}
|
cs |
태스크 수행 순서 제어
태스크의 수행 순서를 제어하는 방법이다.
1
2
3
4
5
6
7
8
9
|
task taskX{
println 'taskX'
}
task taskY{
println 'taskY'
}
taskX.mustRunAfter taskY
|
cs |
If문을 이용한 태스크 생략
if문을 이용하여 특정 태스크를 생략할 수 있다.
1
2
3
4
5
6
7
8
9
|
task conditionTask{
doLast{
println 'conditinal Task'
}
}
conditionTask.onlyIf{!project.hasProperty('skip')}
>gradle -q -Pskip conditionTask
|
cs |
태스크 비활성화
태스크를 지우고 싶진 않고, 당장은 사용하지 않아도 추후에 사용될 수도 있다면 비활성화 기능을 사용해보아도 좋을 듯하다.
1
2
3
4
5
6
7
|
task disableTask{
doLast{
println 'disabled'
}
}
disableTask.enabled=true
|
cs |
여기까지 간단하게 Task를 작성하는 방법을 다루어봤다. 사실 반복문등을 사용하는 것도 가능하다. 많은 태스크 예제가 있지만, 여기까지 간단하게 gradle task 작성방법의 맛을 보았다.
'Web > Gradle' 카테고리의 다른 글
Gradle - Could not initialize class org.codehaus.groovy.runtime.InvokerHelper(Spring, gradle project) (0) | 2020.08.17 |
---|---|
Gradle - 캐시된 dependencies 라이브러리 삭제하기 (0) | 2020.06.23 |
Gradle - Gradle로 자바 프로젝트 만들기 (0) | 2019.10.20 |
Gradle - Gradle의 기본 (0) | 2019.10.20 |