Sök…


Profilering av en byggnad

Innan du börjar ställa in din Gradle-konstruktion för prestanda bör du fastställa en baslinje och ta reda på vilka delar av byggnaden som tar mest tid. För att göra detta kan du profilera din build genom att lägga till --profile argumentet i ditt Gradle-kommando:

gradle --profile
./gradlew --profile

När byggandet är klart ser du en HTML-profilrapport för build under ./build/reports/profile/ och ser ut så här:

Exempel på HTML-profilrapport

Genom att klicka på flikarna bredvid Sammanfattning kan du se en mer detaljerad uppdelning av var tiden går.

Konfigurera efterfrågan

Om profileringen av din byggnad visar betydande tid på Konfigurering av projekt kan alternativet Konfigurera efterfrågan förbättra dina resultat.

Du kan aktivera Configure on Demand-läge genom att redigera $GRADLE_USER_HOME/.gradle/gradle.properties ( ~/.gradle/gradle.properties standard) och ställa org.gradle.configureondemand .

org.gradle.configureondemand=true

Om du bara gradle.properties aktivera det för ett specifikt projekt redigerar du projektets gradle.properties fil istället.

Om Configure on Demand är aktiverat kommer Gradle bara att konfigurera projekt som behövs för uppgiften som körs istället för att konfigurera alla projekt framåt.

Från Gralde Manual :

Konfiguration på begäran-läge försöker konfigurera endast projekt som är relevanta för begärda uppgifter, dvs den kör endast build.gradle filen för projekt som deltar i build. På detta sätt kan konfigureringstiden för en stor byggnad för flera projekt reduceras. På lång sikt blir detta läge standardläget, kanske det enda läget för exekvering av Gradle build.

Ställa in JVM-minnesanvändningsparametrar för Gradle

Du kan ställa in eller öka minnesanvändningsgränserna (eller andra JVM-argument) som används för Gradle builds och Gradle Daemon genom att redigera $GRADLE_USER_HOME/.gradle/gradle.properties ( ~/.gradle/gradle.properties standard) och ställa in org.gradle.jvmargs .

Om du vill konfigurera dessa gränser endast för ett specifikt projekt redigerar du projektets gradle.properties fil istället.

Standardinställningarna för minnesanvändning för Gradle builds och Gradle Daemon är:

org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=256m

Detta möjliggör en generell maximal minnesallokering (högstorlek) på 1 GB, och en maximal minnesallokering för permanenta "interna" objekt på 256 MB. När dessa storlekar uppnås inträffar Garbage Collection, vilket kan minska prestandan avsevärt.

Förutsatt att du har minnet att skona, kan du enkelt fördubbla dessa så:

org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m

Observera att du kommer att sluta se fördelarna med att öka XX:MaxPermSize förr än när Xmx ökar sluta bli fördelaktigt.

Använd Gradle Daemon

Du kan aktivera Gradle Daemon för att förbättra prestandan för dina build.

Gradle Daemon håller Gradle Framework initierat och körs och cachar projektdata i minnet för att förbättra prestandan.

För en enda byggnad

För att aktivera Daemon för en enda konstruktion kan du helt enkelt --daemon argumentet - --daemon till ditt gradle kommando eller Gradle Wrapper-skript.

gradle --daemon
./gradlew --daemon

För alla byggnader av ett projekt

För att aktivera Daemon för alla byggningar av ett projekt kan du lägga till:

org.gradle.daemon=true

Till ditt projekts gradle.properties fil.

För alla byggnader

För att aktivera Gradle Daemon som standard, redigera $GRADLE_USER_HOME/.gradle/gradle.properties ( ~/.gradle/gradle.properties ( ~/.gradle/gradle.properties standard) för varje byggnad som skapas av ditt användarkonto) och lägg till denna rad:

org.gradle.daemon=true

Du kan också göra detta i ett enda kommando på Mac / Linux / * nix-system:

touch ~/.gradle/gradle.properties && echo "org.gradle.daemon=true" >> ~/.gradle/gradle.properties

Eller på Windows:

(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")

Inaktivera Daemon

Du kan inaktivera Daemon för en specifik byggnad med --no-daemon , eller inaktivera det för ett specifikt projekt genom att uttryckligen ställa org.gradle.daemon=false i projektets gradle.properties fil.

Stoppa Daemon

Om du vill stoppa en Daemon-process manuellt kan du antingen döda processen via din operativsystemuppgiftshanterare eller köra gradle --stop . --stop omkopplaren får Gradle att begära att alla kör Daemon-processer, av samma Gradle-version som används för att köra kommandot, avslutar sig själva. Vanligtvis avslutas Daemon-processer automatiskt * efter * 3 timmars inaktivitet eller mindre .

Gradle Parallel bygger

Gradle kör bara en uppgift åt gången som standard, oavsett projektstruktur. Genom att använda --parallel kan du tvinga Gradle att utföra oberoende delprojekt - de som inte har några implicita eller uttryckliga projektberoende mellan varandra - parallellt, så att den kan köra flera uppgifter samtidigt så länge dessa uppgifter är i olika projekt.

Så här bygger du ett projekt i parallellt läge:

gradle build --parallel

Du kan också göra att bygga parallellt som standard för ett projekt genom att lägga till följande inställning i projektets gradle.properties-fil:

org.gradle.parallel=true

Använd den senaste Gradle-versionen

Gradle-teamet arbetar regelbundet med att förbättra prestandan för olika aspekter av Gradle builds. Om du använder en gammal version av Gradle, missar du fördelarna med detta arbete. Prova att uppgradera till den senaste versionen av Gradle för att se vilken typ av inverkan det har. Det är låg risk eftersom mycket få saker bryter mellan mindre versioner av Gradle.

Egenskapsfilen för Gradle wrapper kan hittas i din projektmapp under gradle/wrapper/ och kallas gradle-wrapper.properties . Filens innehåll kan se ut så här:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-X.X.X.zip

Du kan manuellt ändra YYY XXX (nuvarande version) till YYY (nyare version) och nästa gång du kör inslaget laddas den nya versionen ned automatiskt.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow