How to use Gradle 1
Building_and_Testing_with_Gradle 책을 빠르게 보며 요약한 내용입니다. 번역본이 아닙니다.
언제나 그렇듯 원본을 참고하시기 바랍니다.
- How to use Gradle 1: Gradle DefaultTask 의 메소드
- How to use Gradle 2: Gradle DefaultTask 의 속성
- How to use Gradle 3: Task Types
- How to use Gradle 4: Gradle with Maven
Gradle 설치
Mac 에서 Homebrew 를 이용한 설치
` sudo brew install gradle `
Task 정의
선언과 할당을 분리
` « 는 append, doLast() 메소드 같은 기능`
task hello // task 를 변수처럼 정의만 하고 작업은 할당하지 않은 상태.
hello << {
print 'hello, '
}
hello << {
println 'world'
}
결과 > hello, world
Task Configuration blocks
앞 숫자는 실행 순서
3. task initializeDatabase
4. initializeDatabase << { println 'connect to database' }
5. initializeDatabase << { println 'update database schema' }
1. initializeDatabase { print 'configuring ' }
2. initializeDatabase { println 'database connection' }
결과>
configuring database connection
:initializeDatabase
connect to database
update database schema
BUILD SUCCESSFUL
Task 는 Object 다.
모든 Task 는 아무런 action을 하지 않는 DefaultTask 를 상속 받는다.
하지만 Task 가 가지고 있어야할 method 의 인터페이스를 정의하고 있다.
DefaultTask 의 메소드
DefaultTask 는 다음 메소드를 갖는다.
- dependsOn(task)
- doFirst(closure)
- doLast(closure)
- onlyIf(closure)
dependsOn(task)
하나의 dependancy 만 갖을 경우 아래와 같은 방법으로 작성.
task loadTestData {
dependsOn createSchema
}
task loadTestData {
dependsOn << createSchema
}
task lodaTestData {
dependsOn 'createSchema'
}
// 명시적 호출
task loadTestData
loadTestData.dependsOn createSchema
// 단축형
task loadTestData(dependsOn: createSchema)
하나 이상의 dependancy 를 갖을 경우 아래와 같이 작성.
task loadTestData {
dependsOn << compileTestClasses
dependsOn << createSchema
}
task world {
dependsOn compileTestClasses, createSchema
}
// 명시적 호출
task world
world.dependsOn compileTestClasses, createSchema
// 단축형
task world(dependsOn: [ compileTestClasses, createSchema ])
doFirst(closure)
task 액션이 시작될 때 실행되는 블럭
task setupDatabaseTests << {
println 'load test data'
}
setupDatabaseTests.doFirst {
println 'create schema'
}
gradle -b doFirstTest.gradle setupDatabaseTests
결과>
:setupDatabaseTests
create schema
load test data
// doFirst 호출 되고, << 로 append
task.doFirst{ ... }
는 task { doFirst { ... } }
와 같기 때문에, task configuration 블럭이 먼저 호출되고, 이때 doFirst 가 호출 되기 때문에 순서가 바뀐다.
task setupDatabaseTests << {
println 'load test data'
}
setupDatabaseTests {
doFirst {
println 'create schema'
}
}
gradle -b doFirstTest.gradle setupDatabaseTests
결과>
:setupDatabaseTests
create schema
load test data
BUILD SUCCESSFUL
반복되는 doFrist 호출은 추가된다.
task setupDatabaseTests << {
println 'load test data'
}
setupDatabaseTests.doFirst {
println 'create database schema'
}
setupDatabaseTests.doFirst {
println 'drop database schema'
}
setupDatabaseTests << {
println 'loaded test data'
}
gradle -b doFirstTest.gradle setupDatabaseTests
결과 >
:setupDatabaseTests
drop database schema
create database schema
load test data
loaded test data
BUILD SUCCESSFUL
다음과 같이 refectoring 가능함.
task setupDatabaseTests << {
println 'load test data'
}
setupDatabaseTests {
doFirst {
println 'create database schema'
}
doFirst {
println 'drop database schema'
}
}
doLast(closure)
액션의 마지막에 실행되는 것을 제외하고 doFirst 와 비슷한 메소드.
task setupDatabaseTests << {
println 'create database schema'
}
setupDatabaseTests.doLast {
println 'load test data'
}
결과 >
:setupDatabaseTests
create database schema
load test data
BUILD SUCCESSFUL
doFirst 와 같이, 반복된 호출할 경우 추가된다.
task setupDatabaseTests << {
println 'create database schema'
}
setupDatabaseTests.doLast {
println 'load test data'
}
setupDatabaseTests.doLast {
println 'update version table'
}
결과 >
:setupDatabaseTests
create database schema
load test data
update version table
onlyIf(closure)
task 를 실행할지 말지를 결정한다.
task createSchema << {
println 'create database schema'
}
task loadTestData(dependsOn: createSchema) << {
println 'load test data'
}
loadTestData.onlyIf {
System.properties['load.data'] == 'true'
}
gradle -b onlyIf.gradle loadTestData
결과 >
:createSchema
create database schema
:loadTestData SKIPPED
BUILD SUCCESSFUL
gradle -b onlyIf.gradle -Dload.data=true loadTestData
결과 >
:createSchema
create database schema
:loadTestData
load test data
BUILD SUCCESSFUL
다음글 : How to use Gradle 2: Gradle DefaultTask 의 속성
Newest Posts
- [정리] 정보이론: 정보량 (Information), 엔트로피 ( Entropy ), 쿨백 라이블러 발산 (KL-Divergence), 크로스 엔트로피 ( Cross - Entropy ), maximum likelihood
- [발번역] Bag of words (BoW) - Natural Language processing
- Installing Anaconda and Jupyter notebook
- 다시 보는 Java : FileChannel transferTo()
- 다시 보는 Java : NIO Channel
- 다시 보는 Java : Socket-Direct-Protocol
- 다시 보는 Java
- Streamsets DataCollector Source Build
- Apache Helix Core Concepts
- Introduce Flipkart Aesop
Tag Cloud
4.0 (1)
Aesop (1)
Apache (2)
BIGDATA (1)
Bag of Words (1)
BoW (1)
CDC (7)
Centos (1)
Channel (1)
DOC (1)
DataCollector (1)
Database (1)
Databus (6)
Distributed (1)
Elevation (1)
FAQ (1)
FileChannel transferTo (1)
Head First (3)
Hive (1)
Import (1)
Information (1)
JDBC (1)
JNI (2)
JS (1)
Java (10)
JavaScript (2)
KL Divergence (1)
Kafka (4)
Lambda (1)
Lambda Architecture (1)
LinkedIn (6)
Linux (2)
MQ (1)
Monitoring (1)
NG (3)
NIO (2)
NIO Channel (1)
Network (1)
Nimbus (1)
Open API (2)
Open Source (6)
Python (1)
QueryElevationComponent (1)
Raspberry Pi (1)
Real Time (1)
SDP (1)
Score (1)
Sockets Direct Protocol (1)
Statistics (3)
Storm (4)
Storm master woker (1)
Streamsets (1)
Streamsets DataCollector (1)
Struts (2)
Summary (3)
TIP (1)
Tutorial (1)
WORKER (1)
Wiki (3)
XAuth (1)
XQuery (1)
anaconda (1)
android.mk (1)
apache Helix (1)
apache flume (3)
apache kafka (2)
apache spark (2)
architecture (1)
autocomplete (1)
backup (2)
blkid (1)
build (1)
builder (3)
cassandra (3)
cassandra h/w (1)
cassandra hardware (1)
cassandra remote client (1)
cassandra troubleshooting (1)
cassandra warning (1)
cloud (1)
collaborative filtering (1)
cross entropy (1)
data import (1)
databus (1)
db indexing (1)
dead letter exchange (1)
distributed search (2)
dlx (1)
docker (1)
entropy (1)
fdisk (1)
flipkart (1)
flipkart Aesop (1)
flume (3)
flume ng (3)
fq (1)
framework (5)
fstab (1)
function (1)
function query (2)
gradle (3)
hadoop (5)
hadoop + solr (1)
hadoop integration solr (1)
hadoop+solr (1)
hashing trick (1)
head first statistics (3)
hive begins (1)
hive tutorial (1)
hive 소개 (1)
iBATIS (3)
index (3)
index backup (1)
index replication (1)
indexing (4)
integration (2)
introduce (1)
java (7)
java Troubleshooting (1)
java monitoring (1)
javascript object (1)
javascript 접근자 (1)
jupyter (1)
kafka document (1)
kafka introduction (1)
katta (3)
katta hadoop (1)
katta install (1)
koreanAnalyzer (1)
koreanAnalyzer 4.0 (1)
load test (1)
look again (4)
lucene (5)
lucene + hadoop (1)
lucene 4.0 (1)
lucene 4.0 한글 analyzer (1)
lucene 4.1 (1)
machine learning (1)
master (1)
maximum liklihood (1)
memcached (1)
memory (1)
mount (1)
multi mechanize (1)
multiindex (1)
oauth (1)
opensource (14)
oracle (1)
predictionIO (1)
rabbitmq (1)
recommendation system (1)
replication (1)
search (1)
server load (1)
shard (1)
shark shell (1)
similarity algorithm (1)
slideshare (1)
sola admin (1)
solr (21)
solr + hadoop (4)
solr 4.0 (3)
solr 4.1 (1)
solr backup (1)
solr cloud (1)
solr distributed (1)
solr index backup (1)
solr indexing (1)
solr shard (1)
solr tip (1)
solr wiki (2)
solr 한글 analyzer (1)
solr4.0 (1)
solrcloud (2)
solrcolud (1)
sort (4)
sortMissingFirst (1)
sortMissingLast (1)
spark (2)
spark cluster (1)
spout (1)
storm master node (1)
storm spout (1)
storm wokrer node (1)
storm 구성 (2)
storm 마스터 노드 (1)
storm 워커 노드 (1)
storm 정의 (2)
storm kafka (2)
suggeest (1)
suggester (1)
supervisor (1)
tf idf (1)
tomcat (2)
tomcat configuration (1)
tomcat tuning (1)
tomcat7 (2)
tools (10)
transferTo (1)
troubleshooting (2)
tuning (1)
tutorial (1)
ubuntu10.04 (1)
ubuntu10.04 network (1)
vert.x (1)
xdk (1)
검색 점수 (1)
계획 (1)
낙서 (1)
당신 인생 한 모퉁이에 나를 (1)
도커 (1)
도커 소개 (1)
람다 (1)
람다 아키텍처 (1)
루씬 (1)
마스터 노드 (1)
발 번역 (4)
번역 (2)
복제 (1)
부하 (1)
분석 (5)
세계문학전집 (1)
스트럿츠 (2)
쏠라 (1)
아이바티스 (3)
아파치 카프카 (1)
아파치 플럼 (2)
에쿠니 가오리 (2)
올리기 (1)
워커 노드 (1)
유사도 알고리즘 (1)
일기 (1)
젊은 베르테르의 슬픔 (1)
제비꽃 설탕절임 (1)
추천시스템 (1)
카산드라 (2)
카산드라 문제 (1)
카산드라 설치 문제 (1)
카산드라 워닝 (1)
카산드라 원격접속 (1)
카산드라 해결 (1)
카타 (2)
카타 설치 (1)
카프카 (1)
태그를 입력해 주세요. (1)
통계 (3)
통계학 (3)
특정 문서 (1)
플럼 (2)
플럼 ng (2)
하둡 (1)
하드웨어 (1)
한 글자 오류 (1)
한 글자 형태소 분석 (1)
한글자 오류 (1)
한글자 형태소 분석 (1)
헤드 퍼스트 (3)
헤드 퍼스트 통계학 (3)
협업 필터링 (1)