2017-12-28 44 views
0

私はTODOタグをチェックするfix a gradle pluginを試しています。gradleプラグインでタスク依存関係を定義する

このプラグインは、チェックを実行するために使用できる新しいタスク()を追加します。このタスクは自動的に実行されていないが、これはあなたのbuild.gradleに次の行を追加することによって行うことができます:私はこれを宣言することによって、このプラグインを使用するすべてのbuild.gradleでこの行の必要性を削除したい check.dependsOn checkTodo

プラグイン自体の依存関係これは可能ですか?私が試した

もの:

static void applyTasks(final Project project) { 
    TodoTask task = project.tasks.create("checkTodo", TodoTask) 

    project.task('check').dependsOn(task) 
    project.tasks().task('check').dependsOn(task) 
    project.tasks().check 
    project.getAllTasks(true).get('check').dependsOn(task) 
    project.getDefaultTasks().get('check').dependsOn(task) 
} 

project.task('check').dependsOn(task)います:

プラグイン適用に失敗しました[クラス 'をorg.gradle.language.base.plugins.LifecycleBasePlugin']

標準のGradleライフサイクルプラグインを使用する場合、カスタム 'チェック'タスクを宣言することはできません。

project.getAllTasks(true).get(project)のセットには「チェック」タスクが含まれておらず、その他のメソッドは「メソッドが見つかりません」というエラーのみを返します。

+0

問題またはエラーメッセージは何ですか? –

+0

私の編集した質問 – HoldYourWaffle

答えて

0

問題は、プラグインを適用した時点で特定の(または任意の)checkタスクが存在しない可能性があります。

(すべてのタスクの作成を確実にするには(build.gradleのユーザーコードを使用して)、afterEvaluateクロージャを使用してください。 checkという名前のタスクがビルド全体で作成されない場合でも、この方法は失敗します。あなたが特定のプラグインのタスクの作成(例えば、Javaプラグイン)に依存するようにしたい場合は

project.afterEvaluate { 
    project.tasks['check'].dependsOn task 
} 

、プロジェクトのプラグインマネージャのwithIdまたはwithPluginメソッドを使用します。指定されたクロージャは、特定のプラグインが適用されている場合に実行されます。

project.pluginManager.withPlugin('java') { 
    project.tasks['check'].dependsOn task 
} 
関連する問題