woshidan's blog

そんなことよりコードにダイブ。

Gradleのユーザーガイドの12章まで読んでいたログを投下

たまにはWeb日記っぽく、 http://gradle.monochromeroad.com/docs/userguide/userguide.html をしばらく読んでいたのでそのログを投下。

2018/02/12

  • タスクのグラフ構造
  • マルチプロジェクトのビルド
    • サブプロジェクトごとにビルドしなおすかが決められるのは良いだろう
  • 既存の資産の再利用
    • 依存関係を管理する多くの方法
    • 他のビルドツールとの統合(AntやMaven. Mavenプラグインの適用で一発でしたね)
  • 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みたいな書き方(返り値の型とかの定義)でメソッドが定義できて、似たようなビルドタスクもスッキリ
  • デフォルトタスク(defaultTaskstask1,task2, ...)になると gradle と入れただけで実行される
    • 他のタスクを実行するときにも実行されるか気になった
  • タスクの依存関係グラフで特定のタスクがいまから実行しようとしてるタスクと一緒に実行されるか(あるいはそのものか)が実行前に gradle.taskGraph.whenReady でわかる

2018/02/17

  • 依存関係の管理は二つの部分に分けられる
    • プロジェクトのビルド実行に必要なファイルを探す(入力ファイルがどこにあるのか?の設定 => プロジェクトの 依存関係 )
    • ビルドして生成したものをアップロードする(アップロードした出力ファイル => プロジェクトの 公開物 (アーティファクトとも呼ばれるっぽい))
  • リポジトリにはローカルもリモートもあるし、IvyやMavenリポジトリも使える
  • Gradleでビルドした生成物をアップロードする => アップロードしたファイル「(プロジェクトの)(公開)アーティファクト
  • runtimeってAndroidアプリケーションプラグインで使えるのか?

2018/02/18

2018/02/19

  • gradle やってほしいタスクたち、やってほしい順
  • 依存や一緒に実行されるタスクで重複が出ても一度しか実行されない
  • -x で依存したタスクや一緒に指定したタスクのうち、指定したものと指定したものだけが依存していたタスクを除外
  • --continue でビルドに失敗した部分があっても継続できる部分は継続してなるべくエラーを多く披露

2018/02/20

  • ビルドの中でどのタスクに時間がかかっているか知りたいときは --profile オプションをつけてビルドすると build/reports/profile にレポートが出る
  • タスクの実行順だけ知りたいなら -m オプションで空実行
  • 利用するビルドスクリプト(デフォルトはbuild.gradle)を指定したいなら -b オプションだが、マルチプロジェクトでは -p オプションでプロジェクトディレクトリ(build.gradleがあるはずの場所)を使った方がいい