2016-04-20 12 views
2

aufgerufen. Ich versuche, einen Debug-Build-Typ einer Bibliothek für Android zu erstellen.Sowohl preDebugBuild als auch preReleaseBuild werden von Gradle

ich diesen Code in meinem gradle Skript gesetzt haben:

task setDebug(dependsOn: 'preDebugBuild') { 
    project.ext.set("pathType", "debug") 
    println('DEBUG') 
} 

task setRelease(dependsOn: 'preReleaseBuild') { 
    project.ext.set("pathType", "release") 
    println('RELEASE') 
} 

Sache ist, wenn ich laufe gradle mit:

gradle assembleDebug 

Sowohl DEBUG und Veröffentlichung auf dem Bildschirm erhalten gedruckt und damit meine pathType Variable ist immer 'Release'. In der Gradle-Ausgabe kann ich jedoch nur die Debug-Tasks sehen, die aufgerufen werden.

Wie ist das möglich?

Antwort

0

Die Blöcke werden während der Konfigurationsphase ausgeführt. Wenn Sie von dem Codeblock verschieben möchten bis Ausführungsphase ausgewertet wird, dann können Sie ein Muster wie diese verwenden

task setDebug(dependsOn: 'preDebugBuild') << { 
    // ... 
} 

Dies bis zur tatsächlichen Ausführung der Aufgabe warten wird anstelle der Konfiguration der Aufgabe der bewerten Schließung.

Die Art und Weise, wie Sie dies tun, würde dazu führen, dass beide Code-Blöcke bei jeder Ausführung von Gradle ausgewertet werden. Zum Beispiel, wenn Sie gerade gradle ohne Angabe einer Aufgabe ausgeführt haben, würden Sie beide println Anweisungen in den Protokollen sehen. Die Verwendung von << sollte Ihr Problem der Schließung, die ausgewertet wird, unabhängig von den Aufgaben beheben.

+0

Eigentlich wenn ich dies benutze keiner von ihnen ausgeführt werden :( –

Verwandte Themen