====== 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]] 참조.