Qual è la differenza tra queste sintassi di definizione compito in Gradle?

StackOverflow https://stackoverflow.com/questions/2767888

  •  03-10-2019
  •  | 
  •  

Domanda

A)

task build << {  
  description = "Build task."  
  ant.echo('build')  
}

B)

task build {  
  description = "Build task."  
  ant.echo('build')  
}

ho notato che con il tipo B, il codice all'interno del compito sembra essere eseguito quando la tipizzazione gradle -t - echi ANT OUT 'costruire', anche quando basta sfogliare tutte le varie attività disponibili. La descrizione viene anche effettivamente visualizzato con il tipo B. Tuttavia, con il tipo A senza codice viene eseguito quando si elencano le attività disponibili, e la descrizione non viene visualizzato quando si esegue gradle -t. La documentazione non sembrano andare nella differenza tra queste due sintassi (che ho trovato), ma solo che è possibile definire un compito in entrambi i casi.

È stato utile?

Soluzione

La prima sintassi definisce un task, e fornisce un certo codice da eseguire quando viene eseguito il compito. La seconda sintassi definisce un task, e fornisce un certo codice da eseguire subito per configurare l'attività. Ad esempio:

task build << { println 'this executes when build task is executed' }
task build { println 'this executes when the build script is executed' }

Infatti, la prima sintassi è equivalente a:

task build { doLast { println 'this executes when build task is executed' } }

Quindi, nel tuo esempio sopra, per la sintassi ALLA descrizione non si presenta in -t Gradle perché il codice che imposta la descrizione non viene eseguito fino a quando l'operazione eseguita, cosa che non accade quando si esegue -t Gradle.

Per la sintassi B il codice che fa l'ant.echo () viene eseguito per ogni chiamata di Gradle, tra cui Gradle -t

Per fornire sia un'azione da eseguire e una descrizione per l'operazione si può fare uno di:

task build(description: 'some description') << { some code }
task build { description = 'some description'; doLast { some code } }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top