Gradle

update create

メモ

android studioから入ってるためgradleの基礎は飛ばす。

GVM

gradlewは環境変数のJAVA_HOMEが必要。

macOS

export JAVA_HOME=`/usr/libexec/java_home`

install

cur -s get.gvmtool.net | bash

GVMはインストール可能なパッケージの最新情報を取得するため、起動ごとにインターネットに接続します。
オフラインの場合は、ネットにアクセスを行ってしまいレスポンスが悪くなる。

gvm offline enable

戻す場合

gvm offline disable

Gradle install

gvm install gradle

その他有用なコマンド

gvm list gradle
gvm install gradle <version>
gvm default gradle <version>

本体 ~/.gvm/gradle<version>

環境変数

export GRADLE_HOME=<GRADLE_HOME>
export PATH=$GRADLE_HOME/bin:$PATH

cf. JAVA_OPTS, GRADLE_OPTS

Gradleスクリプトは、Groovyスクリプトです。
default: UTF-8
-Dfile.encoding で指定。

ログレベル

gradle -i <task>
  • i(--info): info
  • s(--stacktrace): stacktrace
  • S(--full-stacktrace): full stacktrace
  • d(--debug): debug

よく使う -b(--build-file) build.gradleとは異なるファイル名を使う場合。

gradle init --type java-library
````

gradle --gui

ってのもある見たい。

pluginによってタスクが実装される  
Javaプラグインの場合  
compileJavaなど、
applicationプラグイン  

gradle run

初期化スクリプトの規約  
* コマンドライン引数 -I (--init-script)で指定 - 規約なし。配置場所ファイル名とも自由
* <HOME>/.gradle ディレクトリに配置 - ファイル名がinit.gradleのものを初期化スクリプトとする
* <HOME>/.gradle/init.d ディレクトリに配置する - ファイルの拡張子が.gradleのファイルを初期化スクリプトとする
* <GRADLE_HOME>/init.d ディレクトリに配置する - ファイル拡張子が.gradleのファイルを初期化スクリプトとする

Gradleが自動ロードするプロパティファイル。  
grale.properiesにproxy情報などが設定できる。
優先順  

* コマンドライン-D (--system-prop) 指定
* <PROJECT_HOME>ディレクトリに配置 - gradle.properties
* <HOME>ディレクトリに配置 - gradle.properties

シングルプロジェクトとマルチプロジェクトの判定は  
settings.gradleで行う。  
設定スクリプト(settings.gradle)はルートプロジェクトの直下に配置。  
マルチプロジェクトの場合は、設定スクリプトは必須。  
コマンドラインは -c (--setting-file)オプションで指定。  
それ以外は、Gradleの規約に従った場所を探索。  

1. カレントディレクトリを探索
2. カレントディレクトリの親を探索
3. カレントディレクトリにmasterディレクトリがあり、その配下を探す。

-u (--no-search-upward)が指定された場合は 2,3は行わない。

### タスクグラフ

タスクは1回のみ実行が保証。  
依存関係があれば、従う。  

取り敢えず4つ  
* assemble task
* check task
* build task
* clean task

gradle tasks gradlew tasks --all

# 標準出力

* taskでOutputStreamを作成
* task実行後doLastなどでOutputStreamの内容を出力

def stdout = new ByteArrayOutputStream()

gradlew -v ```

Android Tool Project Site 古いためか転送される
https://developer.android.com/studio/build/index.html