Ří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.