====== Gradle Initialization Scripts - 초기화 스크립트 ======
* [[http://www.gradle.org/docs/current/userguide/init_scripts.html|Initialization Scripts]]
===== 기본 사용법 =====
초기화 스크립트는 Gradle의 다른 스크립트와 유사하다. 하지만 빌드가 시작되기 전에 실행된다.
* 시스템 전역 설정. 예를들면 커스텀 플러그인 찾을 위치 지정.
* 현재 환경에 따른 프라퍼티 설정. 개발 장비, 지속적 통합 장비 등에 따른 프라퍼티 값 바꿔지기 같은 경우.
* 빌드에 필요한 개발자의 개인적 설정 정보.
* 장비 전용 설정. JDK 위치 등.
* 빌드 리스너(build listener)를 등록하여 Gradle 빌드 이벤트를 받는다.
* 빌드 로거를 등록한다.
* ''buildSrc'' 프로젝트의 클래스에는 접근할 수 없다.
===== 초기화 스크립트 실행 =====
- ''-I'' 혹은 ''%%--%%init-script'' 뒤에 스크립트 경로를 줘서 실행. 명령행 인자를 여러번 사용하면 여러 초기화 스크립트가 등록된다.
- ''$USER_HOME/.gradle/init.gradle''
- ''$USER_HOME/.gradle/init.d/*.gradle''
- ''$GRADLE_HOME/init.d/*.gradle''
여러개의 초기화 스크립트가 발견되면 그 모두를 위에 나온 순서대로 다 실행한다. 동일 디렉토리의 스크립트는 알파벳 순서로 실행된다.
===== 초기화 스크립트 작성하기 =====
단순 groovy 스크립트이다. 모든 초기화 스크립트는 [[http://www.gradle.org/docs/current/dsl/org.gradle.api.invocation.Gradle.html|Gradle]] 인스턴스를 받는다. 모든 프라퍼티 참조와 메소드 호출은 Gradle 인스턴스로 위임된다.
==== 프로젝트 구성하기 ====
초기화 스크립트에서 프로젝트 구성을 할 수도 있다. 이는 멀티 프로젝트 빌드에서 구성하는 것과 유사하다. 이는 프로젝트 자체가 평가되기 전에 실행된다.
* 프로젝트 평가전에 먼저 구성 수행하기 ''build.gradle''
repositories {
mavenCentral()
}
task showRepos << {
println "All repos:"
println repositories.collect { it.name }
}
* ''init.gradle''
allprojects {
repositories {
mavenLocal()
}
}
* 실행하면
> gradle --init-script init.gradle -q showRepos
All repos:
[MavenLocal, MavenRepo]
===== 초기화 스크립트의 외부 의존성 =====
''initscript()'' 메소드로 초기화 스크립트 전용 외부 의존성을 지정할 수 있다.
* 외부 의존성을 선언하는 ''init.gradle''
initscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'org.apache.commons', name: 'commons-math', version: '2.0'
}
}
''initscript()'' 메소드의 인자로 넘어온 클로저는 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/initialization/dsl/ScriptHandler.html|ScriptHandler]] 인스턴스를 구성한다. ''classpath'' 구성에 의존성을 추가하면 된다. [[gradle:dependencies|Gradle Dependencies]] 참조.