2017-12-20 1 views
1

Ich erstelle grundlegende benutzerdefinierte Aufgaben in Gradle und lernen, wie sie erweitert werden, um kompliziertere Aktionen (Lernen von hier: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html).Sind pmd, Repositories usw. Tasks in Gradle

Einer meiner Referenzprojekte, die ich Gradle zu lernen, bin erstreckt sieht so etwas wie dieses

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

repositories { 
    mavenCentral() 
} 

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

Meine Frage ist, um die pmd und Repositorys Abschnitte und warum sie haben keine klare Qualifier wie „Aufgabe "auf ihnen, aber meine listSubProjects erfordert eine Aufgabe Qualifier? Sind diese vererbten Aufgaben von Plugins und benötigen kein Task-Qualifikationsmerkmal?

+0

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

Antwort

1

Die Blöcke, die Sie sehen, sind task extensions, auch discussed here.

Ein Plugin Schöpfer kann Erweiterungen definieren Benutzer zu ermöglichen, ein Plugin zu konfigurieren:

// 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 
     ... 
    } 
} 

In project.extensions.create('greeting',... den greeting Block verwendet wird später in build.gradle Dateien definiert ist.

dann in Benutzern build.gradle Dateien

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' 
} 

Oft ist der Name der Erweiterung gewählt wird, das gleiche wie das Plugin und/oder die Aufgabe zu sein, die Dinge verwirrend machen.

+0

danke gute antwort. – Ayusman

Verwandte Themen