Povýšení verze gradle v projektu

Verze použitého gradle (gradle wrapperu) je uvedena v adresar_projektu/gradle/wrapper/gradle-wrapper.properties

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

Stačí změnit verzi v řádku s distributionUrl a reload projects.

Způsob uvedený v dokumentaci je ještě jednodušší. Stačí zadat

./gradlew wrapper --gradle-version 7.2

a verze v gradle-wrapper.properties se změní.

Zobrazení závislostí v Gradle

Pro zobrazení závislostí v Gradle ve stromové struktuře použijte taks dependencies.

./gradlew dependencies
compileClasspath - Compile classpath for compilation 'main' (target  (jvm)).
+--- org.springframework.boot:spring-boot-starter-data-jpa -> 2.1.9.RELEASE
|    +--- org.springframework.boot:spring-boot-starter-aop:2.1.9.RELEASE
|    |    +--- org.springframework.boot:spring-boot-starter:2.1.9.RELEASE
|    |    |    +--- org.springframework.boot:spring-boot:2.1.9.RELEASE
|    |    |    |    +--- org.springframework:spring-core:5.1.10.RELEASE
|    |    |    |    |    \--- org.springframework:spring-jcl:5.1.10.RELEASE
|    |    |    |    \--- org.springframework:spring-context:5.1.10.RELEASE
|    |    |    |         +--- org.springframework:spring-aop:5.1.10.RELEASE
|    |    |    |         |    +--- org.springframework:spring-beans:5.1.10.RELEASE
|    |    |    |         |    |    \--- org.springframework:spring-core:5.1.10.RELEASE (*)
|    |    |    |         |    \--- org.springframework:spring-core:5.1.10.RELEASE (*)
|    |    |    |         +--- org.springframework:spring-beans:5.1.10.RELEASE (*)
|    |    |    |         +--- org.springframework:spring-core:5.1.10.RELEASE (*)
|    |    |    |         \--- org.springframework:spring-expression:5.1.10.RELEASE
|    |    |    |              \--- org.springframework:spring-core:5.1.10.RELEASE (*)
|    |    |    +--- org.springframework.boot:spring-boot-autoconfigure:2.1.9.RELEASE
|    |    |    |    \--- org.springframework.boot:spring-boot:2.1.9.RELEASE (*)
|    |    |    +--- org.springframework.boot:spring-boot-starter-logging:2.1.9.RELEASE
|    |    |    |    +--- ch.qos.logback:logback-classic:1.2.3
|    |    |    |    |    +--- ch.qos.logback:logback-core:1.2.3
|    |    |    |    |    \--- org.slf4j:slf4j-api:1.7.25 -> 1.7.28
|    |    |    |    +--- org.apache.logging.log4j:log4j-to-slf4j:2.11.2
|    |    |    |    |    +--- org.slf4j:slf4j-api:1.7.25 -> 1.7.28
|    |    |    |    |    \--- org.apache.logging.log4j:log4j-api:2.11.2
|    |    |    |    \--- org.slf4j:jul-to-slf4j:1.7.28
|    |    |    |         \--- org.slf4j:slf4j-api:1.7.28
|    |    |    +--- javax.annotation:javax.annotation-api:1.3.2
|    |    |    \--- org.springframework:spring-core:5.1.10.RELEASE (*)
|    |    +--- org.springframework:spring-aop:5.1.10.RELEASE (*)
|    |    \--- org.aspectj:aspectjweaver:1.9.4
|    +--- org.springframework.boot:spring-boot-starter-jdbc:2.1.9.RELEASE
|    |    +--- org.springframework.boot:spring-boot-starter:2.1.9.RELEASE (*)
|    |    +--- com.zaxxer:HikariCP:3.2.0
|    |    |    \--- org.slf4j:slf4j-api:1.7.25 -> 1.7.28
|    |    \--- org.springframework:spring-jdbc:5.1.10.RELEASE
|    |         +--- org.springframework:spring-beans:5.1.10.RELEASE (*)
|    |         +--- org.springframework:spring-core:5.1.10.RELEASE (*)
|    |         \--- org.springframework:spring-tx:5.1.10.RELEASE
|    |              +--- org.springframework:spring-beans:5.1.10.RELEASE (*)
|    |              \--- org.springframework:spring-core:5.1.10.RELEASE (*)

Pokud máte projekt, který se skládá z více modulů/projektů

> Task :projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'my-service'
+--- Project ':my-service-client'
\--- Project ':my-service-service'

přepněte se v adresářové struktuře do daného modulu tam spusťte příkaz

../gradlew dependencies

Pro určitý modul je to pak

./gradlew service:dependencies

a pro určitou konfiguraci

./gradlew service:dependencies --configuration testCompileClasspath

Řízení závislostí v Gradle

V Gradlu v bloku dependencies {...} je možné zadat závislost a hlavně také, kdy jsou tyto závislosti potřeba (níže zmíněnou kofiguraci přidává Java plugin). Knihovny, které potřebujete jak pro kompilaci a tak pro běh, zadáte jako implementation (dříve compile). Pokud danou závislost potřebujete pouze při kompilaci použijete compileOnly, pokud pouze v runtime tak runtimeOnly.

Zde je jednoduchý příklad. Mám projekt v Kotlinu a v rámci tohoto projektu používám knihovnu Klaxon pro parsování json. Tuto knihovnu potřebuji jak při kopilaci, tak při běhu programu. Použiji tedy

implementation("com.beust:klaxon:5.0.9")

Pokud bych použil runtimeOnly, projekt by se nezkompiloval. Pokud bych použil compileOnly, projekt by se sice zkompiloval, ale po spuštění, když by chtěl použít knihovnu Klaxon, by skončil chybou.