Gradleのユーザーガイドの12章まで読んでいたログを投下
たまにはWeb日記っぽく、 http://gradle.monochromeroad.com/docs/userguide/userguide.html をしばらく読んでいたのでそのログを投下。
2018/02/12
- タスクのグラフ構造
- マルチプロジェクトのビルド
- サブプロジェクトごとにビルドしなおすかが決められるのは良いだろう
- 既存の資産の再利用
- Gradleラッパー
- Gradleラッパーを使うと、Gradleをインストールしていないマシンでビルドを実行できます。たとえば、CIサーバー上でビルドしたり、オープンソースプロジェクトを簡単にビルドできるようにしたりするのに便利
- クライアントマシンの管理維持作業を省く(zero administration)というアプローチ
- GroovyはJavaに優しいスクリプト言語
- それでJavaシステム向けのビルドシステムGradleを作る
2018/02/13
- JavaプラグインがRailsみたいにディレクトリなどを規約でしばってる
- buildコマンドを実行するとその依存タスクがたくさん実行される
uploadArchives
とかタスク? っぽいものの名前を知りたい。6章?- Test型とflatDirの意味を調べる
2018/02/14
- マルチプロジェクト, settings.gradle, includeに渡すプロジェクトのルートディレクトリでディレクトリ階層は
:
で表す - dependsOn, into, from の書き方について
// 例7.14 マルチプロジェクトビルド - 配布ファイル task dist(type: Zip) { dependsOn apiJar from 'src/dist' into('libs') { from apiJar.archivePath from configurations.runtime } } artifacts { archives dist }
2018/02/15
taskName << { }
でtaskNameの最後に処理を継ぎ足し- taskName(dependsOn: dependedTaskName) でtaskNameの前にdependedTaskNameが行われる、taskNameはdependedTaskNameに依存している、の指定
- Gradleの定義後の依存関係の指定などオーバーライドの窓口が限定されているRubyぽさ
2018/02/16
- すでに定義されたタスクに対しては
.property
みたいな感じでプロパティへアクセスできる。そのタスクのプロパティはタスク定義時にext.propName
で定義 - Javaみたいな書き方(返り値の型とかの定義)でメソッドが定義できて、似たようなビルドタスクもスッキリ
- デフォルトタスク(
defaultTasks
task1,
task2, ...
)になるとgradle
と入れただけで実行される- 他のタスクを実行するときにも実行されるか気になった
- タスクの依存関係グラフで特定のタスクがいまから実行しようとしてるタスクと一緒に実行されるか(あるいはそのものか)が実行前に
gradle.taskGraph.whenReady
でわかる
2018/02/17
- 依存関係の管理は二つの部分に分けられる
- プロジェクトのビルド実行に必要なファイルを探す(入力ファイルがどこにあるのか?の設定 => プロジェクトの 依存関係 )
- ビルドして生成したものをアップロードする(アップロードした出力ファイル => プロジェクトの 公開物 (アーティファクトとも呼ばれるっぽい))
- リポジトリにはローカルもリモートもあるし、IvyやMavenのリポジトリも使える
- Gradleでビルドした生成物をアップロードする => アップロードしたファイル「(プロジェクトの)(公開)アーティファクト」
- runtimeってAndroidアプリケーションプラグインで使えるのか?
2018/02/18
- Aプラグインを適用すると、Bプラグインも適用される、という話 Android-JavaとAndroid-Kotlinの話を思い出した
- Gradleを使う場合、ソースコードのディレクトリはGradleプラグインが決める
- ジョイントコンパイル
2018/02/19
gradle やってほしいタスクたち、やってほしい順
- 依存や一緒に実行されるタスクで重複が出ても一度しか実行されない
-x
で依存したタスクや一緒に指定したタスクのうち、指定したものと指定したものだけが依存していたタスクを除外--continue
でビルドに失敗した部分があっても継続できる部分は継続してなるべくエラーを多く披露