====== 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