일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Spring Boot
- hdfs
- Spring
- scala
- DDD
- 엘라스틱서치
- intellij
- Java
- Clean Code
- SBT
- Gradle
- 인텔리J
- Storm
- Spring XD
- design pattern
- 스프링 배치
- docker
- hadoop
- spark
- Hbase
- 제주
- hibernate
- elasticsearch
- 도메인주도설계
- elastic search
- Linux
- apache storm
- Angular2
- Spring Batch
- nginx
- Today
- Total
욱'S 노트
Gradle - 빌드 스크립트 기초 본문
Projects and tasks
Gradel에서 두가지 기본 컨셉이 있다 : projects 그리고 tasks
모든 Gradle 빌드는 하나 혹은 그 이상의 프로젝트들로 구성된다. 프로젝트는 Gradle과 함께 동작하는 관련된 것들을 정의한 것을 의미한다. 예를 들면 프로젝트는 라이브러리 jar 파일 혹은 웹 어플리케이션을 대표할 수 있다. 또 다른 프로젝트에 제공할 JAR들을 패키지한 배포판 ZIP일 수도 있다. 프로젝트는 빌드할 무엇을 대표할 필요는 없다. 그것은 수행되어야 할 어떤 것, 즉 스테이징 이나 프로덕션 환경에 어플리케이션을 배포하는 것 일수도 있다. 약간의 논란에 대해서는 지금 걱정할 필요는 없다. Gradle의 컨벤션 빌드는 프로젝트에 적용할 다양한 구현 정의를 지원한다.
각 프로젝트는 하나 또는 다수의 task로 구성된다. task는 빌드를 수행할 때 하나의 작업 단위를 의미한다. 이것은 클래스 컴파일, JAR 생성, javadoc 생성 또는 리파지토리로 아카이브를 퍼블리쉬하는 것일 수 있다.
이제 하나의 프로젝트와 한께 몇몇의 단순한 task들의 정의하는 것을 살펴보자.
Hello world
Gradle 빌드를 실행하기 위해선 gradle 커맨드를 이용한다. gradle 커맨드는 현재 디렉토리에서 build.gradle 파일을 찾는다. build.gradle 파일을 빌드 스크립트라고 부른다. 엄격하게 말하자만 빌드 정의 스크립트지만 그에 대해선 나중에 알아보자. 빌드 스크립트에는 프로젝트와 그에 맞는 타스크들을 정의한다.
아래와 같은 빌드 스크립트를 생성해보자.
task hello { doLast { println 'Hello world!' } }
빌드 스크립트가 포함된 디렉토리로 이동해서 gradle -q hello 커맨드를 실행해보자. -q 옵션은 Gradle의 로그 메시지를 노출하는 옵션이다.
toddsonui-MacBook-Pro:gradle-test devsun$ gradle -q hello
Hello world!
task hello << { println 'Hello world!' }
task upper << { String someString = 'mY_nAmE' println "Original: " + someString println "Upper case: " + someString.toUpperCase() }
task count << { 4.times { print "$it " } }
task hello << { println 'Hello world!' } task intro(dependsOn: hello) << { println "I'm Gradle" }
4.times { counter -> task "task$counter" << { println "I'm task number $counter" } }
4.times { counter -> task "task$counter" << { println "I'm task number $counter" } } task0.dependsOn task2, task3
task hello << {
println 'Hello Earth'
}
hello.doFirst {
println 'Hello Venus'
}
hello.doLast {
println 'Hello Mars'
}
hello << {
println 'Hello Jupiter'
}
task hello << { println 'Hello world!' } hello.doLast { println "Greetings from the $hello.name task." }
task myTask {
ext.myProperty = "myValue"
}
task printTaskProperties << {
println myTask.myProperty
}
task loadfile << {
def files = file('../antLoadfileResources').listFiles().sort()
files.each { File file ->
if (file.isFile()) {
ant.loadfile(srcFile: file, property: file.name)
println " *** $file.name ***"
println "${ant.properties[file.name]}"
}
}
}
task checksum << {
fileList('../antLoadfileResources').each {File file ->
ant.checksum(file: file, property: "cs_$file.name")
println "$file.name Checksum: ${ant.properties["cs_$file.name"]}"
}
}
task loadfile << {
fileList('../antLoadfileResources').each {File file ->
ant.loadfile(srcFile: file, property: file.name)
println "I'm fond of $file.name"
}
}
File[] fileList(String dir) {
file(dir).listFiles({file -> file.isFile() } as FileFilter).sort()
}
defaultTasks 'clean', 'run' task clean << { println 'Default Cleaning!' } task run << { println 'Default Running!' } task other << { println "I'm not a default task!" }
task distribution << { println "We build the zip with version=$version" } task release(dependsOn: 'distribution') << { println 'We release now' } gradle.taskGraph.whenReady {taskGraph -> if (taskGraph.hasTask(release)) { version = '1.0' } else { version = '1.0-SNAPSHOT' } }
'Programming > Gradle' 카테고리의 다른 글
Gradle - Dependency Management Basics (0) | 2015.05.04 |
---|---|
Gradle - Java Quick Start (0) | 2015.05.04 |
Gradle - 설치하기 (0) | 2015.05.04 |
Gradle - 소개 (0) | 2015.04.02 |