この回答で提案されているのと同様に、複数の Gradle タスク間で共通のロジックを再利用しようとしていますが、追加のプロジェクト プロパティが表示されないという問題があります。
煮詰めて、ここに問題があります。build.gradle
追加のプロジェクト プロパティを設定するルート Gradle ビルド スクリプトがあるとします。
project.ext.myProp = 'myValue'
で定義されたサブプロジェクトがありますsettings.gradle
。
include 'subproject'
サブプロジェクトは、その追加のプロジェクト プロパティを参照するカスタム タスクを定義して使用します。
class CustomTask extends DefaultTask {
CustomTask() {
doFirst {
println project.ext.myProp
}
}
}
task custom(type: CustomTask) {
println 'custom task'
}
これを実行すると、次のようになります。
FAILURE: Build failed with an exception.
...
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating project ':subproject'.
...
Caused by: org.gradle.api.tasks.TaskInstantiationException: Could not create task of type 'CustomTask'.
...
Caused by: groovy.lang.MissingPropertyException: cannot get property 'myProp' on extra properties extension as it does not exist
...
BUILD FAILED
これは、次の場合に機能するように見えることに注意してください。
- カスタム タスクは、余分なプロパティと一緒にルート プロジェクトで定義されます。
- 追加のプロパティの代わりに動的プロパティを使用するが、それらは非推奨である場合