Groovy Scripttutorial voor beginners
โก Slimme samenvatting
Groovy Script is een objectgeoriรซnteerde taal voor de Java platform dat compileert naar JVM-bytecode. Het voegt dynamische typen toe.ping, sluitingen en beknopte syntaxis Javaen het levert stroom Jenkins pijpleidingen, Gradle bouwt, en SoapUI beweringen.

Wat is een Groovy Script?
apache Groovy is een objectgeoriรซnteerde, Java syntactisch compatibele programmeertaal gebouwd voor de Java platform. Deze dynamische taal heeft veel kenmerken die vergelijkbaar zijn met PythonRuby, Smalltalk en Perl. Groovy broncode wordt gecompileerd in Java bytecode, dus het werkt op elk platform waar een Java De virtuele machine is geรฏnstalleerd. Groovy Het bedrijf verricht ook veel werk achter de schermen, waardoor het wendbaarder en dynamischer aanvoelt dan een gewoon bedrijf. Java.
A Groovy script is gewoon een .groovy bestand met verklaringen die Groovy Het wordt in een gegenereerde klasse verpakt voordat het wordt uitgevoerd. Daarom kun je een bestand van รฉรฉn regel uitvoeren zonder een klasse of iets dergelijks te hoeven schrijven. main methode. Groovy kan daarom gebruikt worden als scripttaal voor de Java platform, terwijl het nog steeds de zakelijke mogelijkheden biedt van JavaHet voegt productiviteitsfuncties toe zoals DSL-ondersteuning, afsluitingen en optionele dynamische typen.pingIn tegenstelling tot sommige andere talen is het ontworpen als een aanvulling op JavaHet is geen vervanging ervan.
๐กTip: Groovy 5.0 is de huidige stabiele release en is bedoeld voor JDK 11 en hoger. Groovy Versie 4.0 blijft beschikbaar voor JDK 8-projecten, en Groovy Versie 6.0 van JDK 17 bevindt zich nog in de alfafase. Controleer altijd de systeemvereisten op de officiรซle downloadpagina voordat u een versie kiest.
Waarom Groovy?
Hieronder volgen de belangrijkste redenen waarom u het zou moeten gebruiken en leren. Groovy:
- Groovy Het is een wendbare en dynamische taal.
- Het integreert naadloos met alle bestaande systemen. Java objecten en bibliotheken.
- Het voelt gemakkelijk en natuurlijk aan om Java ontwikkelaars.
- De code is beknopter en betekenisvoller dan de equivalente code. Java code.
- Je kunt het binnen zo veel of zo weinig gebruiken als je wilt. Java toepassingen.
- Het draait op de standaard Java Virtuele machine, dus er is geen aparte runtime nodig.
Groovy Geschiedenis
- 2003: Gestart door James S.tracHan en Bob McWhirTer.
- 2004: Ingediend bij de Java Gemeenschapsproces als JSR 241, dat later werd ingetrokken.
- 2005: Teruggebracht op track door Jeremy Rayner en Guillaume Laforge.
- 2007: Groovy 1.0 vrijgegeven.
- 2012: Groovy 2.0 vrijgegeven.
- 2014: Groovy Versie 2.3 is uitgebracht met officiรซle ondersteuning voor JDK 8.
- 2015: Groovy werd een topproject bij Apache Software Foundation.
- 2022: Groovy Versie 4.0 is uitgebracht, waarbij de Maven-coรถrdinaten zijn verplaatst naar
org.apache.groovy. - 2025: Groovy Versie 5.0 is uitgebracht voor JDK 11 en hoger.
Kenmerken van Groovy
- Lijst-, kaart-, bereik- en reguliere expressie-literalen.
- Multimethoden (runtime method dispatch) en metaprogrammering.
- Groovy Klassen en scripts worden meestal opgeslagen in
.groovybestanden. - Scripts bevatten Groovy verklaringen zonder enige klassendeclaratie.
- Scripts kunnen ook methodedefinities bevatten buiten de klassendefinities.
- Groovy code kan worden gecompileerd en volledig worden geรฏntegreerd met een traditioneel systeem. Java toepassing.
- Taalspecifieke ondersteuning voor kaarten, lijsten en reguliere expressies.
- Ondersteuning voor sluitingen, dynamische typingen het meta-objectprotocol.
- Ondersteuning voor zowel statische als dynamische typenping, plus overbelasting van de operator.
- Optionele statische typecontrole via de
@TypeCheckeden@CompileStaticannotaties.
Hoe te installeren Groovy
Stap 1) Zorg ervoor dat je dat hebt gedaan Java geรฏnstalleerd.
Stap 2) Ga naar https://groovy.apache.org/download.html En klik op de knop Windows Installatielink.
Opmerking: u kunt ook installeren Groovy vanuit het binaire Zip-bestand, via een pakketbeheerder zoals SDKMAN!, Homebrew, Scoop of Chocolatey, of als een plugin voor uw Java IDE. In deze Groovy Tijdens de handleiding houden we ons aan de Windows installateur.
Stap 3) Start het gedownloade installatieprogramma. Selecteer de taal en klik op OK.
Stap 4) Klik op het welkomstscherm op VOLGENDE.
Stap 5) Ga akkoord met de licentievoorwaarden.
Stap 6) Selecteer de componenten die u wilt installeren en klik op VOLGENDE.
Stap 7) Selecteer de installatiemap en klik op VOLGENDE.
Stap 8) Selecteer de map 'Startmenu' en klik op 'Volgende'.
Stap 9) Zodra de installatie is voltooid, laat u de paden op de standaardinstellingen staan โโen klikt u op VOLGENDE.
Stap 10) Bevestig de opties voor bestandskoppeling en klik op VOLGENDE.
Stap 11) Zoek in het Startmenu naar Groovy De console wordt gebruikt om de installatie te bevestigen.
โ ๏ธ Waarschuwing: De Windows Het installatieprogramma is een door de community bijgedragen product, geen officiรซle Apache-release. Als uw organisatie ondertekende Apache-downloads vereist, gebruik dan de binaire Zip-distributie en controleer de authenticiteit ervan. .asc handtekening en .sha256 In plaats daarvan een checksum gebruiken.
Groovy Hallo wereld voorbeeld
Stel dat je de eenvoudige tekenreeks "Hallo wereld" wilt afdrukken in JavaDe code zou er als volgt uitzien.
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Output:
Hello World
De bovenstaande code is geldig in beide gevallen. Java en Groovyomdat Groovy accepteert vrijwel alles Java syntaxis. Het voordeel met Groovy Het voordeel is dat je de klassedeclaratie, de openbare methode en de volledig gekwalificeerde printopdracht kunt weglaten en dezelfde uitvoer met รฉรฉn enkele regel kunt bereiken.
println "Hello World"
Output:
Hello World
- Een puntkomma is niet nodig.
- Een cursus of een
mainmethode. System.out.printlnwordt gereduceerd totprintln.
Groovy Variabelen
In JavaStatische binding is verplicht, wat betekent dat het type van een variabele van tevoren moet worden gedeclareerd.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
Output:
104
In het bovenstaande voorbeeld wordt het type van de variabele vooraf gedeclareerd met behulp van het sleutelwoord. intAls je een drijvende-komma getal wilt declareren, gebruik je het trefwoord. float or double.
Als je probeert een String-waarde toe te wijzen aan een int (Verwijder het commentaar bij regel 5), dan krijgt u de volgende compilatiefout.
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
In tegenstelling tot, Groovy ondersteunt dynamische typingVariabelen worden gedefinieerd met behulp van het trefwoord. defEn het type hoeft niet van tevoren te worden gedeclareerd. De runtime bepaalt het variabele type, en je kunt dat type later zelfs nog wijzigen.
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Output:
class java.lang.Integer class java.lang.String
In Groovy Je kunt ook tekenreeksen over meerdere regels maken. Zorg er wel voor dat je de tekenreeks tussen driedubbele aanhalingstekens plaatst.
def x = """Groovy at Guru99""" println x
Output:
Groovy at Guru99
Let op: Je kunt nog steeds expliciete typen gebruiken, zoals byte, short, inten long in GroovyMaar zodra je het type expliciet declareert, kun je het niet meer dynamisch wijzigen.
int x = 104 println x x = "Guru99"
Output:
104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
at jdoodle.run(jdoodle.groovy:3)
Command exited with non-zero status 1
Groovy Operaverdraaid
Een operator is een symbool dat de compiler vertelt een specifieke wiskundige of logische bewerking uit te voeren. Groovy ondersteunt de volgende vijf families van operators.
- Rekenkundige operatoren: optellen (+), aftrekkentract (-), vermenigvuldigen (*), delen (/), modulus (%), verhogen (++), verlagen (โ).
- Relationele operatoren: gelijk aan (==), niet gelijk aan (!=), kleiner dan (<), kleiner dan of gelijk aan (<=), groter dan (>), groter dan of gelijk aan (>=).
- Logische operatoren: en (&&), of (||), niet (!).
- Bitwise-operatoren: en (&), of (|), exclusieve of (^), complement (~).
- Toewijzingsoperatoren: ken (=) en de samengestelde vormen (+=), (-=), (*=), (/=), (%=) toe.
Groovy voegt een paar operators toe die Java Dat is niet het geval, en ze verwijderen veel overbodige code voor null-controles.
| Operator | Beschrijving |
|---|---|
| ?. | Veilige navigatie. Retourneert null in plaats van een NullPointerException te gooien wanneer de linkerkant null is. |
| ?: | Elvis-operator. Geeft de linkerkant terug als deze waar is, anders de rechterkant. |
| <=> | Ruimteschipoperator. Delegeert aan compareTo en is nuttig binnen sorteerafsluitingen. |
| ==~ | Reguliere expressie-match. Retourneert alleen true als de hele tekenreeks overeenkomt met het patroon. |
Groovy Passanten
In JavaJe zou een tel-lus als volgt definiรซren.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
Output:
0 1 2 3 4 5
Je kunt dezelfde output bereiken in Groovy met de upto methode, die beide grenzen omvat.
0.upto(5) { println "$it" }
Output:
0 1 2 3 4 5
Hier it is de impliciete parameter van de closure en bevat de waarde van de huidige iteratie. Bekijk de volgende code.
2.upto(4) { println "$it" }
Output:
2 3 4
U kunt ook gebruik maken van de times methode. Het begint altijd bij 0 en stopt รฉรฉn voor het getal waarop je het aanroept, dus je hebt 6 nodig om 0 tot en met 5 af te drukken.
6.times { println "$it" }
Output:
0 1 2 3 4 5
Stel dat je nu de getallen 0, 2 en 4 wilt afdrukken met een Java for loop.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
Output:
0 2 4
U kunt gebruik maken van de step methode voor hetzelfde resultaat. Het tweede argument is de increment, en het eerste argument is een exclusieve bovengrens.
0.step(5, 2) { println "$it" }
Output:
0 2 4
Groovy Besluitvorming
Groovy hergebruikt de Java voorwaardelijke instructies en voegt een veel flexibelere oplossing toe. switchDe tabel hieronder geeft een overzicht van de opties.
| Statement | Beschrijving |
|---|---|
| als verklaring | Als in JavaDe body van de if-instructie wordt uitgevoerd wanneer de voorwaarde waar is. |
| if/else-instructie | De voorwaarde in de if-instructie wordt eerst geรซvalueerd. Als deze waar is, worden de instructies in het if-blok uitgevoerd en wordt het else-blok overgeslagen. Als de voorwaarde onwaar is, worden in plaats daarvan de instructies in het else-blok uitgevoerd. |
| Geneste if-instructie | Wordt gebruikt wanneer je een verdere voorwaarde binnen een if-blok wilt testen. |
| switch-instructie | Een geneste if-else-keten wordt onleesbaar wanneer er veel voorwaarden zijn. De switch-instructie maakt dezelfde logica gemakkelijker leesbaar. GroovyEen caselabel kan een waarde, een klasse, een bereik, een reguliere expressie of een closure zijn. |
| Geneste switch-instructie | Groovy Hiermee kan ook een switch-statement binnen een ander switch-statement worden geplaatst. |
Groovy Lijst
Een lijststructuur stelt je in staat om een โโverzameling gegevensitems op te slaan. GroovyEen lijst bevat een reeks objectverwijzingen en behoudt de positie van elk element in die reeks. Een lijstliteral wordt geschreven als een reeks objecten, gescheiden door komma's en tussen vierkante haken geplaatst.
Voorbeelden Groovy lijsten:
- Een lijst met tekenreeksen:
['Angular', 'Nodejs'] - Een lijst met gemengde objectverwijzingen:
['Groovy', 2, 4, 2.6] - Een lijst met gehele getallen:
[16, 17, 18, 19] - Een lege lijst:
[]
De volgende lijstmethoden zijn beschikbaar in Groovy.
| Methode | Beschrijving |
|---|---|
| toevoegen() | Voegt een nieuwe waarde toe aan het einde van de lijst. |
| bevat() | Retourneert true als de lijst een bepaalde waarde bevat. |
| krijgen() | Geeft het element op de opgegeven positie terug. |
| is leeg() | Retourneert true als de lijst geen elementen bevat. |
| minus() | Hiermee wordt een nieuwe lijst gemaakt met de elementen van de originele lijst, met uitzondering van de elementen die in de opgegeven verzameling zijn gespecificeerd. |
| plus() | Hiermee wordt een nieuwe lijst gemaakt, bestaande uit de elementen van de originele lijst en de elementen uit de gegeven verzameling. |
| knal() | Verwijdert het laatste item uit de lijst en geeft het terug. |
| verwijderen() | Verwijdert het element op de opgegeven positie. |
| omgekeerde() | Hiermee wordt een nieuwe lijst gemaakt die de elementen van de oorspronkelijke lijst omdraait. |
| grootte() | Geeft het aantal elementen in de lijst weer. |
| soort() | Geeft een gesorteerde kopie van de lijst terug. |
Stel je de volgende situatie voor Groovy Scriptvoorbeeld.
def y = ["Guru99", "is", "Best", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
Output:
[Guru99, is, Best, for, Groovy] true Best Learning
De eerste regel print de oorspronkelijke lijst met vijf elementen, omdat add() is nog niet uitgevoerd. get(2) retourneert "Beste" sinds Groovy Lijsten zijn nul-geรฏndexeerd, en pop() Geeft "Leren" terug omdat dat item als laatste is toegevoegd.
Groovy Maps
A Groovy Een map is een verzameling sleutel-waardeparen. Sleutels hoeven niet tussen aanhalingstekens te staan โโals het eenvoudige identificatoren zijn, waardoor de letterlijke waarden in een map zeer compact blijven.
Voorbeelden Groovy kaarten:
[tutorial: 'Java', language: 'Groovy']is een verzameling van twee sleutel-waardeparen.[:]geeft een lege kaart weer.
Hieronder vindt u een lijst met de beschikbare kaartmethoden in Groovy.
| Methode | Beschrijving |
|---|---|
| bevatSleutel() | Controleert of de kaart de opgegeven sleutel bevat. |
| krijgen() | Zoekt de sleutel op in de Map en retourneert de overeenkomende waarde. Als er geen resultaat wordt gevonden, retourneert de functie null. |
| sleutelbos() | Retourneert de set sleutels in de Map. |
| zetten() | Koppelt de opgegeven waarde aan de gegeven sleutel. Als de Map al een Map bevatte.ping Voor die sleutel wordt de oude waarde vervangen. |
| grootte() | Retourneert het aantal sleutel-waardeparen.pings. |
| waarden () | Geeft een collectieweergave van de waarden terug. |
Groovy voorbeeld:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
Output:
Jen
Groovy sluitingen
A Groovy Een closure is een blok code dat is verpakt als een object. Het gedraagt โโzich als een methode of een functie, maar kan worden opgeslagen in een variabele en worden doorgegeven zoals elke andere waarde.
Voorbeeld van een eenvoudige afsluiting:
def myClosure = { println "My First Closure" } myClosure()
Output:
My First Closure
Een closure kan parameters accepteren. De lijst met identificatoren wordt gescheiden door komma's, waarbij een pijl (->) het einde van de parameterlijst aangeeft.
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
Output:
6
Een closure kan ook een waarde retourneren.
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
Output:
6
Als u geen parameterlijst declareert, Groovy levert รฉรฉn impliciete parameter genaamd itClosures kunnen ook aan andere closures worden doorgegeven, en dat is precies hoe collectiemethoden zoals each, collecten findAll werken.
Groovy Tools
We zullen drie belangrijke hulpmiddelen bekijken die bij de levering worden meegeleverd. Groovy verdeling:
- groovysh: Voert code interactief uit vanaf de commandoregel.
- groovyConsole: Een grafisch venster voor interactieve code-uitvoering.
- gaaf: wordt uitgevoerd Groovy scriptbestanden, op dezelfde manier als je een Perl- of Python scripts.
Groovysh
- Een commandoregelomgeving.
- Helpt je bij de uitvoering Groovy Programmeer interactief.
- Hiermee kunt u afzonderlijke instructies of complete scripts invoeren.
De onderstaande schermafbeelding laat zien hoe Groovysh expressies regel voor regel evalueert.
Groovy troosten
- Een Swing-interface die fungeert als een minimale Groovy ontwikkelingsredacteur.
- Hiermee kunt u schrijven en uitvoeren Groovy Programmeer interactief.
- Helpt je bij het laden en uitvoeren Groovy scriptbestanden.
In de Groovy Hieronder in de console: het script wordt in het bovenste venster getypt en het resultaat verschijnt in het onderste venster.
Groovy
De groovy De opdracht is de processor die het uitvoert. Groovy Het compileert de broncode naar bytecode in het geheugen en voert deze in รฉรฉn stap uit, waardoor een aparte buildfase niet nodig is. Het kan ook worden gebruikt om eenvoudige programma's en scripts te testen. Groovy Uitdrukkingen rechtstreeks vanuit de terminal, zoals hieronder weergegeven.
Waar Groovy Wordt gebruikt in echte projecten
De meeste ontwikkelaars ontmoeten elkaar Groovy Niet als een op zichzelf staande taal, maar als de scriptlaag binnen een tool die ze al gebruiken. Weten waar het voorkomt, maakt het veel gemakkelijker om de bovenstaande syntax te plaatsen.
| Gereedschap | Hoe Groovy is gebruikt |
|---|---|
| Jenkins | Declaratieve en gescripte pipelines worden geschreven in een Groovy DSL en gedeelde bibliotheken zijn eenvoudig. Groovy klassen. |
| Gradle | Het klassieke build.gradle bestand is een Groovy script, waardoor het compacter leest dan een Maven POM of een Mier buildbestand. |
| SoapUI | Groovy Scriptstappen en scriptasserties sturen dynamische aanvraaggegevens en aangepaste responscontroles aan. |
| Spock | A Groovy Een testframework met 'given-when-then'-blokken en gegevenstabellen wordt veel gebruikt voor unit tests van de JVM. |
| Elasticsearch en Grails | Grails bouwt complete webapplicaties op Groovyen diverse datatools accepteren Groovy voor aangepaste scripting. |
In automatisering testen Voor dit team is dit dubbel belangrijk: zowel de CI-taak die de testsuite uitvoert als de tests zelf kunnen belangrijk zijn. GroovyZo is er รฉรฉn taal die zowel de verbinding tussen de pipelines als de assertielogica dekt.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| De standaard toegangsaanpasser is 'public', dus een methode zonder aanpassing is toegankelijk buiten de klasse en het pakket waartoe deze behoort. | De standaard toegangsaanpasser is package-private, wat betekent dat velden, methoden en klassen zonder een dergelijke aanpassing alleen binnen hun eigen pakket zichtbaar zijn. |
| Getters en setters worden automatisch gegenereerd voor klasse-eigenschappen. | Je moet zelf getter- en setter-methoden voor de velden definiรซren. |
| Groovy Hiermee kan variabelen worden vervangen binnen tekenreeksen met dubbele aanhalingstekens. | Java Ondersteunt geen tekenreeksinterpolatie. |
| Het invoeren van het type gegevens is optioneel. | Het invullen van het type gegevens is verplicht. |
| Instructies hoeven niet met een puntkomma te eindigen. | Elke zin eindigt met een puntkomma. |
| Groovy Verpakt automatisch elk script in een gegenereerde Script-klasse. | Je hebt een main-methode nodig om een โโklasse uitvoerbaar te maken. |
Alles is standaard openbaar en dynamisch, maar @CompileStatic Herstelt Java- snelheid en controle op niveau. |
Alles wordt statisch gecompileerd en gecontroleerd tijdens het bouwproces. |
Mythen over Groovy
| Mythe | Realiteit |
|---|---|
| Groovy Kan alleen voor scripting worden gebruikt. | Het is uitstekend geschikt voor scripting, maar het compileert ook naar gewone klassen die je in elke JVM-applicatie kunt gebruiken. |
| Groovy Het draait allemaal om closures, dus het is gewoon een functionele programmeertaal. | Groovy Het leent ideeรซn van functionele programmeertalen zoals Lisp en Clojure, maar blijft in essentie een objectgeoriรซnteerde taal. |
| Groovy is alleen de moeite waard voor testgestuurde ontwikkeling. | Groovy Het is zeer geschikt voor TDD met Spock, maar dat is zeker niet de enige reden om het te gebruiken. |
| Je hebt nog Groovy als je Grails wilt gebruiken. | Grails is een krachtig framework voor webontwikkeling, maar Gradle, Jenkinsen Spock gebruiken allemaal Groovy zonder het. |
Nadelen van het gebruik Groovy
- JVM en Groovy Het script start traag op, wat het gebruik ervan voor snelle scripting op besturingssysteemniveau beperkt.
- Groovy wordt buiten JVM-georiรซnteerde gemeenschappen niet algemeen geaccepteerd.
- Het is onhandig om te gebruiken Groovy zonder een IDE die de dynamische functies ervan begrijpt.
- Dynamische planning kan ervoor zorgen dat Groovy code trager dan het equivalent Java code, tenzij je het toepast
@CompileStatic. - Groovy Programma's hebben mogelijk meer geheugen nodig dan gewone programma's. Java 's.
- Kennis van Java is feitelijk een voorwaarde.
Zodra je je op je gemak voelt met Groovy Na de syntaxis is de natuurlijke volgende stap het ecosysteem eromheen. Versterk de fundamenten met de Java zelfstudie, kijk dan hoe Groovy scripts sturen builds en implementaties aan in Jenkinsvergelijk buildtools met Maven en Apache mieren onderzoeken hoe Groovy beweringen passen in Selenium en API-testsuites.













