Suponha que eu tenha um fluxo de tarefas como este:
As tarefas B e C dependem da tarefa A. Agora, digamos que eu queira usar o valor "cachorros" nas tarefas:
Qual seria a melhor maneira de fazer isso? Gradle permite fazer isso usando @OutputFile:
@OutputFile
File outputFile;
Mas não há @Output equivalente para não arquivos:
@Output
int dogs;
Saídas de tarefas
Não há compartilhamento de valor na memória entre tarefas que seria levado em consideração para compilações incrementais. Embora ainda seja uma opção válida gravar esse valor
dogs=16
no arquivo e depois ler o valor do arquivo em outras tarefas.Compartilhando propriedades
A abordagem alternativa é que sua tarefa A defina propriedades extras no objeto Projeto (ou outros objetos, se necessário), por exemplo
project.extra["dogs"]=16
. Depois dessa tarefa, B e C podem ler a mesma propriedadeval shepherdDogs = project.extra["dogs"]
. Embora, é claro, se a tarefa não tiver saídas, a tarefa será executada a cada construção; você não poderá utilizar compilações incrementais . Ele deve ser executado sempre, pois esta propriedade está armazenada na memória e cada vez que você executar build você terá que definir o valor para os cães, pois o valor não está armazenado em algum lugar do arquivo.