2016-05-06 4 views
2

Kann eine Groovy-Klasse (in buildSrc/src/main/groovy) direkt auf das Projekt zugreifen, oder muss das Projekt explizit übergeben werden?Kann eine groovy build script class direkt auf das Gradle-Projekt zugreifen?

Ich kann auf das Projekt zugreifen, indem ich es explizit als Methodenparameter übergebe, aber ich möchte es nicht weitergeben. Ich möchte zum Beispiel über das Projekt Zugriff auf das Projekt erhalten ein statischer Methodenaufruf Ist diese Art von implizitem Zugriff möglich?

explizite Zugriffs

import org.gradle.api.Project 

class MyClazz { 
    static void foo(Project project) { 
     println project.version 
    } 
} 

Aufgabe in build.gradle

task foo() << { 
    MyClazz.foo(project) 
} 

Implicit Zugriff über statischen Methodenaufruf (dies ist das gewünschte Zugriffsmuster)

import org.gradle.api.Project 

class MyClazz { 
    static void foo() { 
     println Project.getProject().version 
    } 
} 

Tas k in build.gradle

task foo() << { 
    MyClazz.foo() 
} 
+0

, wie Sie das Skript nennst? – AdamSkywalker

+0

@AdamSkywalker Ich aktualisierte die Frage, um die Aufgabe in build.gradle –

+0

zu integrieren Ich denke, Sie verstehen es nicht schlimmer als ich - Aufruf einer Methode während der Ausführung der Aufgabe hat keinen bestimmten Kontext. Gradle API hat keine Project.getProject() -Analoga, so dass Sie entweder das Projekt in Params übergeben müssen oder dasselbe tun müssen, bevor Ihre eigentliche Aufgabe in einer Service-Setup-Aufgabe ausgeführt wird. – AdamSkywalker

Antwort

0

Sie können dazu Groovy-Erweiterungsmethoden verwenden.

hier ist ein in sich geschlossenes Beispiel, sollte aber auch mit Gradle arbeiten:

class Project { 
    // we add this method dynamically 
    //static getProject() { [ version: 2.3 ] } 
} 

class MyClazz { 
    static void foo() { 
     println Project.getProject().version 
    } 
} 

class Gradle { 

    static def main(args) { 
     Project.metaClass.static.getProject = { [ version: 4.2 ] } 
     MyClazz.foo() 
    } 

} 
Verwandte Themen