2016-06-30 12 views
8

Niedawno zacząłem pracować z gradle. I okazało się dość szybko, że można łatwo powiedzieć Gradle automatycznie wykrywać bieżącą wersję z następującym fragmencie:Proces RerunUsuń zmiany w zmiennych

def getVersionName = { -> 
    def stdout = new ByteArrayOutputStream() 
    exec { 
    commandLine 'git', 'describe', '--dirty=-SNAPSHOT' 
    standardOutput = stdout 
    } 
    return stdout.toString().trim() 
} 

version = getVersionName() 

I okazało się, że można zastąpić ten numer wersji do swoich zasobów tak:

processResources { 
    expand(version: version) 
} 

I w plikach chcesz mieć numer wersji coś takiego (powinna działać z dowolnej zmiennej)

version: ${version} 

podstawienie to gre pracy w pracy i zgodnie z oczekiwaniami.

Wystąpił jednak problem, gdy numer wersji został zmieniony, a żadne zasoby nie spowodowały, że zasoby nie zostały ponownie przetworzone i dlatego numer wersji nie jest aktualizowany w tych plikach.
ja nieco stałe to mówiąc zadanie uruchomić za każdym razem tak:

processResources { 
    expand(version: version) 

    outputs.upToDateWhen { false } 
} 

To działa, ale czuję się jak to jest dość brudny Hack.

To, co chciałbym mieć zamiast tego, to logika, która ponownie uruchomiłaby zadanie, gdy pliki zasobów uległyby zmianie (jak już to się stało) lub gdy pojawił się numer wersji (lub jakakolwiek zmienna lub zmienne, o które dbam) zmiana.

Jeśli ktoś jest zainteresowany tu jest link do rzeczywistego pliku: https://gitlab.crazyblock-network.net/BrainStone/MplManager/blob/master/build.gradle
I to jest repo: https://gitlab.crazyblock-network.net/BrainStone/MplManager

Odpowiedz

2

To powinno rozwiązać problem:

def tokens = [ 
    'version': version 
] 

processResources { 
    inputs.properties(tokens) 
    expand(tokens) 
} 
+0

wydaje się działać w przypadku, gdy Mam tylko jedną zmienną. Ale kiedy mam kilka na mapie, pojawia się błąd podobny do tego: '' Nie można znaleźć metody expand() dla argumentów [{wersja = 2.9-1-gcb183f9-SNAPSHOT, MPLversion = 1.0.0}] '' – BrainStone

+0

Nieważne. Użyłem rozszerzenia w niewłaściwym miejscu! – BrainStone