vinduer - Gradle clean build - build sparkes før rengøring

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et multi-projekt Gradle build script, der kører succesfuldt på Windows 10. Det læser og opdaterer en Version.properties-fil, der er placeret væk fra projektstyrede mapper.
 Alle filmanipulationer er lavet ved hjælp af Gradle/groovy. Efter at Versionsfilen er blevet læst, inkrementeret og omskrevet, kopieres den til en build/class-mappe, hvor den hentes af efterfølgende jar- og shadowjar-opgaver.

Alt fungerer som annonceret, hvis jeg påberåber gradle som følger:


gradle build shadowjar ... etc.


Men hvis jeg påberåber den rene opgave før bygningen, læses og øges filen korrekt, men kopien af ​​filen fejler tydeligt.


Den anvendte kommando er:


gradle clean build shadowjar


Min mistænksomhed er, at gradvis ikke venter på, at den rene opgave skal afslutte, før du starter byggeprocessen. Filen bliver læst og inkrementeret, men i mellemtiden er de mange projekter rene aktiviteter endnu ikke færdige. Jeg har forsøgt variationer på afhængigheder {} blokke, doFirst {} og doLast {} for at prøve at skubbe filkopien tilbage yderligere i byggeprocessen. Mit hovedkrav er at have filen Version.properties på plads, før kassen eller shadowjar-opgaven udføres. Jeg er mistanke om at prøve at skrive i gradle's build/kataloger, fordi det måske ikke er muligt at sætte noget i bygningskatalogerne, mens gradle udfører sine aktiviteter. Er der nogen måde at sikre, at filen Version.properties (eller en genereret fil) kopieres? Eller er der en anden placering, som jeg kan bruge, der ikke vil blive blæst væk med gradvis på ren tid, men alligevel hentes i bygningen: jar/build: shadowjar?

Bedste reference


Du skal ikke kalde gradvis ren 99,99\% af tiden, den er overflødig på grund af gradvis 'incremental build-funktion. Så længe du korrekt definerer dine opgaveindgange og output og starter fra grunden op i hver opgave løser problemet sig sig selv.


I hvert fald i din sag kan den forkerte rækkefølge skyldes afhængighed mellem rene og andre opgaver, er der nogen?

Andre referencer 1


Jeg har fundet en måde at skrive ud en genereret Version.properties-fil, der bliver hentet af jar og shadowjar-opgaver. Brug gradle kopi opgaven og placere den reviderede Version.properties fil i en ressource mappe. Bygningsaktiviteten indeholder de filer, der findes i ressourcer/i efterfølgende opgaver (jar, shadowjar, test osv.) Min mistænkning er, at fordi rent blæser væk bygger kataloger grad, forudsætter at aktiviteten er fuldført, når den starter bygningen. Jeg tror, ​​at jeg har bevist, at dette ikke er tilfældet. DoFirst {}, doLast {} og afhængigheder {} synes ikke at fungere som modifikatorer til at rense bygningen.