ねこ元帥の中の人@リウマチ

日々の覚書など。ブログ名はオンラインゲームのアカウント名をいつも「ねこ元帥」にしているから。そして、2013年11月リウマチと診断されたとです。(2012年11月から時々手足に原因不明の痛みが発生、2013年9月以降は足の痛みが常態化、2013年12月30日からMTX服用開始、4月過ぎるころにはわずかの痛みが残る程度まで回復して現在に至る。)

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