gradleラッパーの環境をワークスペース内に限定する
【要求】
gradleラッパーをプロジェクトのリポジトリに登録しておくことで、gradleを準備することなく勝手にダウンロードして処理することができるが、ダウンロード済みの環境をインターネットに接続していない環境にコピーして使用したい。
【調査事項】
- gradleラッパー使用時にダウンロードされるファイルはどこに格納しているか
- ダウンロードファイルの格納先を変更する手段
【調査内容】
初めにgradleラッパータスクを実行してダウンロードされるファイルを調べる。
- wrapperタスクのみ定義したgradleビルドファイルを作成する。
PS> cd $Project PS> $content = "task wrapper(type: Wrapper) { gradleVersion = '1.11' } " [System.IO.File]::WriteAllText("$($PWD.ProviderPath)\build.gradle", $content)
$Project └─build.gradle
- wrapperタスクを実行する。
PS> gradle wrapper
- カレントディレクトリに以下のファイル/ディレクトリができた。これはgradleラッパーのフィアル群。
$Project ├─.gradle │ └─1.11 │ └─taskArtifacts ├─gradle │ └─wrapper │ ├─gradle-wrapper.jar │ └─gradle-wrapper.properties ├─gradlew └─gradlew.bat
- ホームディレクトリに以下のファイル/ディレクトリができた。これはgradleタスク実行時に作成されるファイルと思われる。
$Home └─.gradle ├─caches │ ├─1.11 │ │ └─scripts │ │ └─build_68c385t92c7tqs0t48rj6iq7no │ │ └─ProjectScript │ │ ├─buildscript │ │ │ └─classes │ │ └─no_buildscript │ │ └─classes │ └─modules-2 └─native ├─18 │ └─windows-amd64 └─jna └─win32-amd64
$Home/.gradleの場所を変更できればよい。調べてみたら環境変数のGRADLE_USER_HOMEで指定できるようなので試してみた。
- 生成されたファイル/ディレクトリを削除し、環境変数を設定してwrapperタスクを実行する。
PS> rm -r -fo -ex build.gradle * PS> rm -r -fo $Home/.gradle PS> $Env:GRADLE_USER_HOME = "./.gradle" PS> gradle wrapper
- カレントディレクトリに以下のファイル/ディレクトリができた。$Home/.gradle以下にできていたものが一緒になっている。
$Project ├─.gradle │ ├─1.11 │ │ └─taskArtifacts │ ├─caches │ │ ├─1.11 │ │ │ └─scripts │ │ │ └─build_68c385t92c7tqs0t48rj6iq7no │ │ │ └─ProjectScript │ │ │ ├─buildscript │ │ │ │ └─classes │ │ │ └─no_buildscript │ │ │ └─classes │ │ └─modules-2 │ └─native │ ├─18 │ │ └─windows-amd64 │ └─jna │ └─win32-amd64 ├─gradle │ └─wrapper │ ├─gradle-wrapper.jar │ └─gradle-wrapper.properties ├─gradlew └─gradlew.bat
--- a/integration/gradlew.bat +++ b/integration/gradlew.bat @@ -15,6 +15,7 @@ set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +set GRADLE_USER_HOME=%APP_HOME%\.gradle @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome
- gradleラッパーを実行する。
PS> .\gradlew
- カレントディレクトリ内のフィアル/ディレクトリは以下のようになった。.gradle/wrapper/distsにgradleがダウンロードされた。
$Project ├─.gradle │ ├─1.11 │ │ └─taskArtifacts │ ├─caches │ │ ├─1.11 │ │ │ └─scripts │ │ │ └─build_68c385t92c7tqs0t48rj6iq7no │ │ │ └─ProjectScript │ │ │ ├─buildscript │ │ │ │ └─classes │ │ │ └─no_buildscript │ │ │ └─classes │ │ └─modules-2 │ ├─native │ │ ├─18 │ │ │ └─windows-amd64 │ │ └─jna │ │ └─win32-amd64 │ └─wrapper │ └─dists │ └─gradle-1.11-bin │ └─4h5v8877arc3jhuqbm3osbr7o7 │ └─gradle-1.11 │ ├─bin │ ├─init.d │ ├─lib │ │ └─plugins │ └─media ├─gradle │ └─wrapper │ ├─gradle-wrapper.jar │ └─gradle-wrapper.properties ├─gradlew └─gradlew.bat