Gradle harjutus
Gradle on võimas tööriist, millel on palju võimalusi. Meie jaoks lihtsustab ta eelkõige sõltuvuste (koodis kasutatavate väliste teekide) haldamist ning kindlustab, et teie oma lahenduste kirjutamisel ning juhendajad lahenduste kontrollimisel kasutaksid samasid teekide versioone. Lisaks on nii IntelliJ's kui Eclipse's olemas pluginad, mis lubavad teil ühe nupuvajutusega jooksutada teste vms.
Esmalt teeme ühe väga lihtsa näidisprojekti Gradle abil, milles näeme kui lihtsasti käib sõltuvuste haldus. Tahame kirjutada funktsiooni, mis teeks sõnes kõikide sõnade algustähed suureks ning ülejäänud väikseks (toimiks nagu Pythonist tuttav title() funktsioon). Lisaks soovime kirjutada automaattesti, mis meie funktsiooni kontrolliks.
- Loodetavasti oled juba klooninud AKT repositooriumi, aga nüüd tõmbame endale täiesti tühja projekti siit: https://bitbucket.org/plas/gradle-demo.git. Seal on ainult kus Gradle Wrapperi failid, mida pannakse tihti gradle projektidele kaasa.
- Nüüd võiks avada see käsurea shell, milles oled harjunud iga päev töötama...
- Navigeeri gradle-demo kataloogi
- Gradle ootab, et meie kood oleks sobiva struktuuriga kataloogis:
mkdir src\main\java
. (Kirjeldame Windowsi käsud ja edaspidi eeldame, et Linux/Mac kasutajad oskavad neid teisendada:mkdir -p src/main/java
.) - Teeme ka kataloogi, kus Gradle ootab teste:
mkdir src\test\java
- Teeme nüüd Java faili, milles defineerime oma funktsiooni. Kuna aga meil on kiire ning ei soovi ise funktsionaalsust kirjutada, siis kasutame sellist teekide kogumit nagu apache commons, kus on meile vajalik funktsioon juba realiseeritud capitalizeFully.
src\main\java
kataloogi tee fail GradleExample.java
import org.apache.commons.lang3.text.WordUtils; public class GradleExample { // testis katsetamiseks triviaalne f-n public static boolean alwaysTrue() { return true; } // peale igat tühikut või sidekriipsu alustatakse suure tähega public static String title(String input) { return WordUtils.capitalizeFully(input, ' ', '-'); } }
- Lisame ka testi,
src\test\java
kataloogi tee fail GradleExampleTest.java
import org.junit.Test; import static org.junit.Assert.*; public class GradleExampleTest { @Test public void testAlwaysTrue() { assertTrue("alwaysTrue should return 'true'", GradleExample.alwaysTrue()); } @Test public void testTitle() { String input = "mai-liis maasikas"; String expected = "Mai-Liis Maasikas"; assertEquals(input, expected, GradleExample.title(input)); } }
- Selleks, et saadud koodi kompileerida ning käivitada, peaksime nüüd laadima alla apache commons lang3 ning junit JAR failid. Ning kui soovime oma koodi jagada kellegagi, peaksime andma kaasa ka need päris suured teegid. Siinkohal tulebki appi Gradle, mille abil saame vajalikud failid endale automaatselt. Loome projekti kataloogi (gradle-demo) uue faili build.gradle, milles ütleme Gradle'le, mida me temalt soovime.
// java plugin, mida läheb meil alati vaja apply plugin: 'java' // kust Gradle peaks otsima vajalikke resursse repositories { // enamasti piisab järgnevast kahest repost jcenter() mavenCentral() } // mida ning millal (mis taski juures) meil vaja on dependencies { // kompileerimiseks on meil vaja commons-lang3 teeki compile 'org.apache.commons:commons-lang3:3.5' // testide jaoks on vaja junit teeki testCompile 'junit:junit:4.12' }
- Põhimõtteliselt ongi kõik olemas, et Gradle saaks projekti kompileerida ning teste käivitada. Pöördume tagasi käsureale ning projekti peakataloogis käivita
gradlew tasks
. Uuri, missuguseid võimalusi Gradle sulle pakub. Meie kasutame test taski:gradlew test
. Kui kõik on siiani õnnestunud, siis peaksid saama teate BUILD SUCCESSFUL. (Tõenäoliselt nägid ka, et Gradle laadis alla mingeid faile - need olid siis puuduvad teegid). - Kui nüüd uurid projekti kataloogi, siis näed, et lisandud on build kataloog. Selles on kompileeritud Java .class failid, aga ka näiteks testide tulemused. Vaata: build\reports\tests\index.html.
- Muuda nüüd GradleExampleTest.java faili nii, et mõni test põruks ning jooksuta
gradlew test
uuesti. Vaata, mis teate said. Vaata ka testide tulemusi. - Impordi projekt IntelliJ'sse. Esmalt veendu, et IntelliJ Gradle plugin on olemas - vaikimisi peaks kõigil olema, aga vaata File->Settings->Plugins. Seejärel File->New->Project from Existing Sources ning vali projekti kataloog, external model Gradle. Nüüd peaks olema sul IntelliJ's projekt lahti ning eraldi toolbar Gradle jaoks, kus taskid näha. Proovi muuta midagi testi failis ning jooksutada test taski.