Recentemente ho iniziato a lavorare con gradle. Ho scoperto abbastanza presto che si può facilmente dire Gradle per rilevare automaticamente la versione attuale con il seguente frammento:Riesegui processoRisura le modifiche alle variabili
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--dirty=-SNAPSHOT'
standardOutput = stdout
}
return stdout.toString().trim()
}
version = getVersionName()
L'ho scoperto che è possibile sostituire tale numero di versione nelle vostre risorse in questo modo:
processResources {
expand(version: version)
}
E nei file che si desidera avere il numero di versione o meno così (dovrebbe funzionare con qualsiasi variabile)
version: ${version}
la sostituzione è gre di lavoro e funziona come previsto.
Tuttavia, ho riscontrato un problema quando il numero di versione è cambiato e nessuna risorsa ha fatto che le risorse non vengano rielaborate e quindi il numero di versione non viene aggiornato in quei file.
Ho un po 'riparato questo dicendo il compito di eseguire ogni volta in questo modo:
processResources {
expand(version: version)
outputs.upToDateWhen { false }
}
Questo è il lavoro, ma mi sento come questo è un hack piuttosto sporca.
Quello che mi piacerebbe avere invece è una logica che dovrebbe eseguire nuovamente l'attività ogni volta che i file di risorse cambiano (come già fa) o quando il numero di versione (o qualsiasi variabile o variabile che mi interessa per quella materia) modificare.
Se qualcuno è interessato ecco il link al file vero e proprio: https://gitlab.crazyblock-network.net/BrainStone/MplManager/blob/master/build.gradle
e questo è il repo: https://gitlab.crazyblock-network.net/BrainStone/MplManager
sembra funzionare nel caso in cui Ho solo una variabile. Ma quando ne ho diversi nella mappa ottengo un errore come questo: '' Impossibile trovare il metodo expand() per gli argomenti [{version = 2.9-1-gcb183f9-SNAPSHOT, MPLversion = 1.0.0}] '' – BrainStone
Nevermind. Ho usato espandere nella posizione sbagliata! – BrainStone