====== Gradle Wrapper ====== * http://www.gradle.org/docs/current/userguide/gradle_wrapper.html * Gradle을 각 개발자나 CI 서버에 깔지 않고, 프로젝트에 함께 포함시켜 배포할 수 있는 방법을 제공해준다. ===== 명령행을 통한 Wrapper 기본 설정 ===== Gradle 3.1 버전에 all 타입으로 wrapper 설정/Upgrade 생성. gradle wrapper --gradle-version 3.1 --distribution-type all ''distribution-type''은 Gradle 3.x 부터 가능. ===== 기본 설정 ===== * 더이상 불필요. * ''build.gradle'' task wrapper(type: Wrapper) { gradleVersion = '1.6' // 원하는 Gradle 버전 명시 } * ''gradle wrapper''를 한 번실행해 주면 ''gradle/wrapper'' 디렉토리가 생성되고 래퍼 jar 들이 복사된다. * 이 상태 그대로를 VCS에 올려서 공유하면 다른 개발자들은 ''gradlew'' 혹은 ''gradlew.bat'' 명령으로 Gradle 작업을 수행하면 된다. * *Nix 계열에서는 ''gradlew'' 파일에 실행 권한이 없으므로 항상 ''sh gradlew 옵션들'' 형태로 실행해야 한다. ===== 세부 설정 ===== * ''gradlew[.bat]'' 파일에서 ''DEFAULT_JVM_OPTS''를 편집하여 기본 JVM 옵션을 설정할 수 있다. * ''gradle/wrapper/gradle-wrapper.properties'' 파일에서 distributionUrl 을 프라퍼티 파일이 있는 디렉토리에 대해 상대 경로로 지정하면 URL에서 다운로드 받지 않고 저장된 파일을 사용할 수 있다. ===== gradlew 자동 찾아 실행하는 스크립트 ===== * Linux에서 현재 디렉토리를 포함하여 자기 위의 디렉토리를 자동으로 탐색하여 ''gradlew'' 명령을 찾고 이를 실행해주는 스크립트. * 파일명 : ''gw'' #!/bin/bash current_dir=`pwd` while [ "$current_dir" != "/" ] do if [ -f "$current_dir/gradlew" ] then break; fi current_dir=`dirname "$current_dir"` done if [ "$current_dir" != "/" ] then bash "$current_dir/gradlew" "$@" else echo "No gradlew file exists." fi * 실행예 # 현재 디렉토리가 ~/project/module_1 이고, gradlew 는 project에 있을 때 gw dependencies # 위 명령은 자동으로 project/gradlew dependencies를 현재 디렉토리에서 실행한다. # 따라서 실제 실행 결과는 다음과 같다. ~/project/gradlew :module_1:dependencies * [[gradle:shell_completion|Gradle Shell Completion]] * https://unix.stackexchange.com/questions/293393/find-a-specific-file-in-the-nearest-ancestor-of-the-current-working-directory * 유사 프로젝트 * https://github.com/gdubw/gdub * https://github.com/srs/gw * https://crates.io/crates/gw