2017-12-20 20 views
1

私はGradleで基本的なカスタムタスクを作成し、それらを拡張してより複雑なアクションを実行する方法を学習しています(ここから学ぶ:https://docs.gradle.org/current/userguide/tutorial_using_tasks.html)。私は学ぶために拡張しています私の参照プロジェクトのGradleのpmd、リポジトリなどのタスク

一つは、Gradleのは、私の質問は、PMDとリポジトリのセクションの周りで、なぜ彼らは、「タスクのような明確な修飾子を持っていないこの

// pmd config 
pmd { 
    ignoreFailures = false 
    reportsDir = file("$globalOutputDir/pmd") 
    toolVersion = toolVersions.pmdVersion 
} 

repositories { 
    mavenCentral() 
} 

task listSubProjects{ 
    doLast{ 
     println 'Searching in root dir `' 
    } 
} 

ようになります"私のlistSubProjectsにはタスク修飾子が必要ですか?これらの継承されたタスクはプラグインからのもので、タスク修飾子は必要ありませんか?

+0

関連:https://stackoverflow.com/questions/17360544/accessing-the-configure-closure-from-a-gradle-extension – tkruse

答えて

1

表示されているブロックはtask extensions、またdiscussed hereです。

プラグインの作成者は、ユーザーがプラグインを設定できるようにするための拡張機能を定義することができます。

// plugin code 
class GreetingPluginExtension { 
    // default value 
    String message = 'Hello from GreetingPlugin' 
} 

// plugin code 
class GreetingPlugin implements Plugin<Project> { 
    void apply(Project project) { 
     // Add the 'greeting' extension object 
     def extension = project.extensions.create('greeting', GreetingPluginExtension) 
     // Add a task that uses configuration from the extension object 
     ... 
    } 
} 

greetingブロックproject.extensions.create('greeting',...で定義されてbuild.gradleファイルに後で使用するために。ユーザーのbuild.gradleファイルで次に

apply plugin: GreetingPlugin 

// Configure the extension 
greeting.message = 'Hi from Gradle' 

// Same effect as previous lines but with different syntax 
greeting { 
    message = 'Hi from Gradle' 
} 

は、多くの場合、拡張子の名前は、物事が混乱することができた、プラグインおよび/またはタスクと同じになるように選択されます。

+0

ありがとう良い答え。 – Ayusman

関連する問題