Gradle標準にビルド時のプロジェクト状態をレポートするProject Reports Pluginがあります.
本稿はこのプラグインを使ってみたレポートです.
公式ドキュメントにあるObtaining information about your buildで触れられているいくつかのコマンドをGradleのタスクとして定義できます.
導入は非常に簡単で apply plugin: 'project-report'
を宣言するだけです.
これにより追加されるタスクについて紹介します.
DependencyReport
プロジェクトの依存関係ツリーをテキストファイル形式でレポートするタスクです.
レポートはbuild/reports/project
フォルダ配下に出力されます.
このタスクはコマンドラインで下記を実行した結果と等価です.
./gradlew dependencies
下記のような結果が得られます.
------------------------------------------------------------
Project :app
------------------------------------------------------------
_debugAndroidTestApk - ## Internal use, do not manually configure ##
No dependencies
_debugAndroidTestCompile - ## Internal use, do not manually configure ##
No dependencies
_debugApk - ## Internal use, do not manually configure ##
+--- com.android.support:appcompat-v7:23.1.1
| \--- com.android.support:support-v4:23.1.1
| \--- com.android.support:support-annotations:23.1.1
+--- com.android.support:design:23.1.1
| +--- com.android.support:appcompat-v7:23.1.1 (*)
| +--- com.android.support:recyclerview-v7:23.1.1
Androidでは依存性の推移で問題が発生する機会が多く, これを解決するためによく使われるコマンドです.
参考: 気をつけたいGradleの推移的依存関係とその解決 - Qiita
HtmlDependencyReport
プロジェクトの依存関係ツリーをHTML形式でレポートするタスクです.
レポートはbuild/reports/project/dependencies
フォルダ配下に出力されます.
(このレポート形式が見やすいのかは別として…)
デフォルト設定だと, 各モジュール毎にHTMLレポートの出力を行う必要があります.
もし, 複数のモジュールを扱うプロジェクトであれば, ルートのbuild.gradle
に下記を定義することでプロジェクト全体を対象としたレポートを出力できます.
apply plugin: 'project-report'
htmlDependencyReport {
projects = project.allprojects
}
PropertyReport
プロジェクトのプロパティをテキストファイル形式でレポートするタスクです.
レポートはbuild/reports/project
フォルダ配下に出力されます.
このタスクはコマンドラインで下記を実行した結果と等価です.
./gradlew properties
下記のような結果が得られます.
------------------------------------------------------------
Project :app
------------------------------------------------------------
allprojects: [project ':app']
android: com.android.build.gradle.AppExtension_Decorated@1526742
android.injected.invoked.from.ide: true
androidDependencies: task ':app:androidDependencies'
ant: org.gradle.api.internal.project.DefaultAntBuilder@1ef6195
...
TaskReport
プロジェクトのタスク一覧をテキストファイル形式でレポートするタスクです.
レポートはbuild/reports/project
フォルダ配下に出力されます.
このタスクはコマンドラインで下記を実行した結果と等価です.
./gradlew tasks
下記のような出力結果が得られます.
------------------------------------------------------------
All tasks runnable from project :app
------------------------------------------------------------
Android tasks
-------------
androidDependencies - Displays the Android dependencies of the project.
signingReport - Displays the signing info for each variant.
sourceSets - Prints out all the source sets defined in this project.
Build tasks
-----------
assemble - Assembles all variants of all applications and secondary packages.
assembleAndroidTest - Assembles all the Test applications.
assembleDebug - Assembles all Debug builds.
...
ProjectReport
ここまで紹介したdependencyReport
, propertyReport
, taskReport
, htmlDependencyReport
を全て実行するショートカットタスクです.
各レポートタスクの共通設定が可能です.
- projectReportDir
- プロジェクトレポートの出力場所を指定する.
- projectReportDirName
- プロジェクトレポートの出力先フォルダ名を指定する.
projectReport {
projectReportDirName = "project_reports"
}
以上です.