Groovy Tutorial de script pentru începători

⚡ Rezumat inteligent

Groovy Scriptul este un limbaj orientat pe obiecte pentru Java platformă care se compilează în bytecode JVM. Adaugă tip dinamicping, închideri și sintaxă concisă pentru Javași alimentează Jenkins conducte, Gradle construiește și SoapUI afirmații.

  • 🧩 Java compatibil: Cel mai valid Java Codul se compilează neschimbat în Groovy, deci costul învățării rămâne foarte scăzut.
  • ⚡ Less șablon standard: O singură linie println înlocuiește clasa, metoda main și apelul System.out Java cereri.
  • 🔀 Dinamic typing: Cuvântul cheie „def” permite unei variabile să conțină un număr întreg și apoi un șir de caractere la momentul execuției.
  • 🔁 Bucle compacte: Metodele upto, times și step înlocuiesc buclele for detaliate în stil C pe o singură linie.
  • 📦 Colecții native: Listele și hărțile au sintaxă literală plus funcții ajutătoare precum pop, keySet și sort.
  • 🧠 Închideri: Blocurile de cod acționează ca obiecte, acceptă parametri, returnează valori și se imbricau în alte închideri.
  • ⚙️ Trei instrumente: groovysh oferă un shell, groovyConsole oferă o interfață grafică, iar groovy rulează direct fișiere script.

Groovy Tutorial de script pentru începători

Ce este a Groovy Scenariul?

Apache Groovy este orientat pe obiecte, Java limbaj de programare compatibil cu sintaxa, construit pentru Java platformă. Acest limbaj dinamic are multe caracteristici similare cu Python, Ruby, Smalltalk și Perl. Groovy codul sursă este compilat în Java bytecode, deci rulează pe orice platformă unde un Java Mașina virtuală este instalată. Groovy de asemenea, desfășoară multă muncă în culise, ceea ce îl face să pară mai agil și mai dinamic decât simplul Java.

A Groovy scenariu este pur și simplu a .groovy fișier care conține declarații care Groovy se încadrează într-o clasă generată înainte de a o rula. De aceea puteți executa un fișier de o singură linie fără a scrie o clasă sau un main metodă. Groovy poate fi, prin urmare, utilizat ca limbaj de scripting pentru Java platformă, oferind în același timp capabilitățile enterprise ale JavaAdaugă funcții de productivitate, cum ar fi suport DSL, închideri și opțiuni dinamice opționale.pingSpre deosebire de alte limbaje, este conceput ca un companion pentru Java, nu un înlocuitor pentru acesta.

💡 Sfat: Groovy 5.0 este linia de lansare stabilă actuală și vizează JDK 11 și versiunile ulterioare. Groovy Versiunea 4.0 rămâne disponibilă pentru proiectele JDK 8 și Groovy Versiunea 6.0 este încă în versiunea alfa pentru JDK 17. Verificați întotdeauna tabelul cu cerințele de sistem de pe pagina oficială de descărcare înainte de a alege o versiune.

De ce Groovy?

Iată principalele motive pentru care ar trebui să folosești și să înveți Groovy:

  • Groovy este un limbaj agil și dinamic.
  • Se integrează perfect cu toate cele existente Java obiecte și biblioteci.
  • Se simte ușor și natural să Java dezvoltatori.
  • Codul este mai concis și mai semnificativ decât echivalentul Java cod.
  • Îl poți folosi înăuntru cât de mult sau cât de puțin dorești Java aplicatii.
  • Funcționează pe baza standardului Java Mașină virtuală, deci nu este necesar un timp de execuție separat.

Groovy Istorie

  • 2003: Început de James S.tracHan și Bob McWhirter.
  • 2004: Trimis către Java Procesul Comunitar ca JSR 241, care a fost ulterior retras.
  • 2005: Readus în funcțiune track de Jeremy Rayner și Guillaume Laforge.
  • 2007: Groovy 1.0 lansat.
  • 2012: Groovy 2.0 lansat.
  • 2014: Groovy Versiunea 2.3 a fost lansată cu suport oficial pentru JDK 8.
  • 2015: Groovy a devenit un proiect de nivel înalt la Apache Software Foundation.
  • 2022: Groovy Versiunea 4.0 a fost lansată, coordonatele Maven fiind mutate la org.apache.groovy.
  • 2025: Groovy 5.0 lansată pentru JDK 11 și versiuni ulterioare.

Caracteristicile Groovy

  • Literali de tip listă, hartă, interval și expresie regulată.
  • Multimetode (dispecerizarea metodelor în timpul rulării) și metaprogramare.
  • Groovy Clasele și scripturile sunt de obicei stocate în .groovy fișiere.
  • Scripturile conțin Groovy declarații fără nicio declarație de clasă.
  • Scripturile pot conține, de asemenea, definiții de metode în afara definițiilor de clasă.
  • Groovy codul poate fi compilat și complet integrat cu un sistem tradițional Java aplicație.
  • Suport la nivel de limbă pentru hărți, liste și expresii regulate.
  • Suport pentru închideri, tip dinamicpingși protocolul meta-obiect.
  • Suport atât pentru stil static, cât și pentru stil dinamicping, plus supraîncărcarea operatorilor.
  • Verificare statică opțională a tipului prin @TypeChecked și @CompileStatic adnotări.

Cum se instalează Groovy

Pas 1) Asigură-te că ai Java instalat.

Pas 2) Accesează https://groovy.apache.org/download.html și faceți clic pe Windows link de instalare.

Groovy pagina de descărcare cu linkul de instalare

Notă: De asemenea, puteți instala Groovy din fișierul binar Zip, printr-un manager de pachete precum SDKMAN!, Homebrew, Scoop sau Chocolatey sau ca plugin pentru Java IDE. În acest Groovy ghidul nostru vom respecta Windows instalare.

Pas 3) Lansați programul de instalare descărcat. Selectați limba și faceți clic pe OK.

Groovy dialog de selectare a limbii pentru instalator

Pas 4) Pe ecranul de bun venit, faceți clic pe URMĂTORUL.

Groovy ecran de bun venit al instalatorului

Pas 5) Sunt de acord cu termenii licenței.

Groovy ecranul acordului de licență pentru instalator

Pas 6) Selectați componentele pe care doriți să le instalați și faceți clic pe ÎNAINTE.

Groovy ecranul de selectare a componentelor instalatorului

Pas 7) Selectați directorul de instalare și faceți clic pe URMĂTORUL.

Groovy ecranul directorului de instalare

Pas 8) Selectați folderul Meniu Start și faceți clic pe URMĂTORUL.

Groovy ecranul folderului Meniu Start al instalatorului

Pas 9) După ce instalarea este finalizată, lăsați căile la valorile implicite și faceți clic pe ÎNAINTE.

Groovy ecranul căii de instalare a mediului de instalare

Pas 10) Confirmați opțiunile de asociere a fișierelor și faceți clic pe URMĂTORUL.

Groovy ecranul de asociere a fișierelor de instalare

Pas 11) În meniul Start, căutați Groovy Consolă pentru a confirma instalarea.

Căutare în meniul Start care afișează Groovy Comandă rapidă pentru consolă

⚠️ Atenție: Windows Programul de instalare este un artefact contribuit de comunitate, nu o versiune oficială de Apache. Dacă organizația dvs. necesită descărcări Apache semnate, utilizați distribuția binară Zip și verificați-i .asc semnătură și .sha256 sumă de control în schimb.

Groovy Hello World Exemplu

Să presupunem că vrei să imprimi șirul simplu „Salut, lume” în JavaCodul ar arăta astfel.

public class Demo {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

ieșire:

Hello World

Codul de mai sus este valid în ambele Java și Groovy, Deoarece Groovy acceptă aproape tot Java sintaxă. Avantajul cu Groovy este că poți elimina declarația clasei, metoda publică și apelul complet calificat de tip print și poți obține același rezultat cu o singură linie.

println "Hello World"

ieșire:

Hello World
  • Nu este nevoie de punct și virgulă.
  • Nu este nevoie de o clasă sau de o main metodă.
  • System.out.println se reduce la println.

Groovy Variabile

In Java, legarea statică este obligatorie, ceea ce înseamnă că tipul unei variabile trebuie declarat în prealabil.

public class Demo {
    public static void main(String[] args) {
        int x = 104;
        System.out.println(x);
        //x = "Guru99";
    }
}

ieșire:

104

În exemplul de mai sus, tipul variabilei este declarat în avans folosind cuvântul cheie intDacă ați declara un număr cu virgulă mobilă, ați folosi cuvântul cheie float or double.

Dacă încercați să atribuiți o valoare de tip String unui int (eliminați comentariul liniei 5), veți primi următoarea eroare de compilare.

Demo.java:5: error: incompatible types: String cannot be converted to int
x = "Guru99";

In contrast, Groovy susține dinamica tapingVariabilele sunt definite folosind cuvântul cheie def, iar tipul nu trebuie declarat în avans. Runtime-ul determină tipul variabilei și puteți chiar modifica acel tip ulterior.

def x = 104
println x.getClass()
x = "Guru99"
println x.getClass()

ieșire:

class java.lang.Integer
class java.lang.String

In Groovy De asemenea, puteți crea șiruri de caractere cu mai multe linii. Asigurați-vă doar că includeți șirul între ghilimele triple.

def x = """Groovy
at
Guru99"""
println x

ieșire:

Groovy
at
Guru99

Notă: Puteți utiliza în continuare tipuri explicite, cum ar fi byte, short, int și long in GroovyDar odată ce declari tipul explicit, nu îl mai poți modifica dinamic.

int x = 104
println x
x = "Guru99"

ieșire:

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 Operatori

Un operator este un simbol care îi spune compilatorului să efectueze o anumită manipulare matematică sau logică. Groovy acceptă următoarele cinci familii de operatori.

  • Operatori aritmetici: adăugare (+), substituiretract (-), înmulțire (*), împărțire (/), modul (%), incrementare (++), decrementare (–).
  • Operatori relaționali: egal cu (==), diferit de (!=), mai mic decât (<), mai mic sau egal cu (<=), mai mare decât (>), mai mare sau egal cu (>=).
  • Operatori logici: și (&&) sau (||) și nu (!).
  • Operatori pe biți: și (&) sau (|), sau exclusiv (^), complement (~).
  • Operatori de atribuire: atribuiți (=) și formele compuse (+=), (-=), (*=), (/=), (%=).

Groovy adaugă câțiva operatori care Java nu are și elimină o mulțime de exemple de verificare nulă.

OperaTdR Descriere
?. Navigare sigură. Returnează nul în loc să genereze o NullPointerException atunci când partea stângă este nulă.
?: Operatorul Elvis. Returnează partea stângă dacă este adevărată, altfel partea dreaptă.
<=> Operator de navă spațială. Deleagă către compareTo și este util în interiorul închiderilor de sortare.
==~ Potrivire regex. Returnează valoarea true numai când întregul șir se potrivește cu modelul.

Groovy Buclele

In Java, ați defini o buclă de numărare după cum urmează.

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x++) {
            System.out.println(x);
        }
    }
}

ieșire:

0
1
2
3
4
5

Puteți obține aceeași ieșire în Groovy cu upto metodă, care include ambele limite.

0.upto(5) { println "$it" }

ieșire:

0
1
2
3
4
5

Aici it este parametrul implicit al închiderii și conține valoarea iterației curente. Luați în considerare următorul cod.

2.upto(4) { println "$it" }

ieșire:

2
3
4

Puteți folosi, de asemenea, times metodă. Întotdeauna începe de la 0 și se oprește cu un punct înainte de numărul pe care îl apelezi, deci ai nevoie de 6 pentru a afișa de la 0 la 5.

6.times { println "$it" }

ieșire:

0
1
2
3
4
5

Acum să presupunem că vrei să imprimi 0, 2 și 4 cu un Java pentru bucla.

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x=x+2) {
            System.out.println(x);
        }
    }
}

ieșire:

0
2
4

Aveți posibilitatea să utilizați step metodă pentru același rezultat. Al doilea argument este incrementul, iar primul argument este o limită superioară exclusivă.

0.step(5, 2) { println "$it" }

ieșire:

0
2
4

Groovy Luarea deciziilor

Groovy reutilizează Java instrucțiuni condiționale și adaugă o mult mai flexibilă switchTabelul de mai jos prezintă pe scurt opțiunile.

Declarație Descriere
afirmatie if Ca în Java, corpul instrucțiunii if este executat atunci când condiția este adevărată.
instrucțiune if/else Condiția din instrucțiunea if este evaluată prima. Dacă este adevărată, instrucțiunile din blocul if rulează, iar blocul else este omis. Dacă este falsă, instrucțiunile din blocul else rulează în schimb.
Instrucțiune if imbricată Se folosește atunci când trebuie să testați o condiție suplimentară în interiorul unui bloc if.
declarație de comutare Un lanț imbricat if-else devine ilizibil atunci când aveți mai multe condiții. Instrucțiunea switch face aceeași logică mai ușor de citit. În Groovy, o etichetă de caz poate fi o valoare, o clasă, un interval, o expresie regulată sau o închidere.
Instrucțiune switch imbricată Groovy permite, de asemenea, plasarea unei instrucțiuni switch în interiorul alteia.

Groovy Listă

O structură de listă vă permite să stocați o colecție de elemente de date. În Groovy, o listă conține o secvență de referințe la obiecte și păstrează poziția fiecărui element din acea secvență. Un literal de listă este scris ca o serie de obiecte separate prin virgule și cuprinse între paranteze pătrate.

Exemple de Groovy liste:

  • O listă de șiruri de caractere: ['Angular', 'Nodejs']
  • O listă de referințe la obiecte mixte: ['Groovy', 2, 4, 2.6]
  • O listă de valori întregi: [16, 17, 18, 19]
  • O listă goală: []

Următoarele metode de listare sunt disponibile în Groovy.

Metodă Descriere
adăuga() Adaugă o nouă valoare la sfârșitul listei.
conține() Returnează true dacă Lista conține o anumită valoare.
obține() Returnează elementul aflat la poziția dată.
este gol() Returnează true dacă Lista nu conține elemente.
minus() Creează o listă nouă formată din elementele originalului, excluzându-le pe cele specificate în colecția dată.
la care se adauga() Creează o listă nouă formată din elementele originalului împreună cu cele din colecția dată.
pop () Elimină ultimul element din listă și îl returnează.
elimina() Elimină elementul din poziția dată.
verso() Creează o listă nouă care inversează elementele listei originale.
mărimea() Returnează numărul de elemente din listă.
fel() Returnează o copie sortată a listei.

Luați în considerare următoarele Groovy exemplu de scenariu.

def y = ["Guru99", "is", "Best", "for", "Groovy"]
println y
y.add("Learning")
println(y.contains("is"))
println(y.get(2))
println(y.pop())

ieșire:

[Guru99, is, Best, for, Groovy]
true
Best
Learning

Prima linie afișează lista originală cu cinci elemente, deoarece add() nu a alergat încă. get(2) returnează „Cel mai bun” din momentul în care Groovy listele au index zero și pop() returnează „Învățare” deoarece elementul respectiv a fost adăugat ultimul.

Groovy Harta

A Groovy Harta este o colecție de perechi cheie-valoare. Cheile nu necesită ghilimele atunci când sunt identificatori simpli, ceea ce menține literalii hărții foarte compacti.

Exemple de Groovy harti:

  • [tutorial: 'Java', language: 'Groovy'] este o colecție de două perechi cheie-valoare.
  • [:] reprezintă o hartă goală.

Iată o listă a metodelor de cartografiere disponibile în Groovy.

Metodă Descriere
containsKey() Verifică dacă harta conține cheia dată.
obține() Caută cheia în Hartă și returnează valoarea corespunzătoare. Dacă nu se găsește nicio intrare, returnează nul.
keySet() Returnează setul de chei din Hartă.
a pune() Asociază valoarea specificată cu cheia dată. Dacă Harta conținea deja o hartăping pentru cheia respectivă, valoarea veche este înlocuită.
mărimea() Returnează numărul de mape cheie-valoarepings.
valori () Returnează o vizualizare de colecție a valorilor.

Groovy exemplu:

def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")

ieșire:

Jen

Groovy Capace

A Groovy O închidere este un bloc de cod încapsulat ca un obiect. Se comportă ca o metodă sau o funcție, dar poate fi stocată într-o variabilă și transmisă ca orice altă valoare.

Exemplu de închidere simplă:

def myClosure = {
    println "My First Closure"
}
myClosure()

ieșire:

My First Closure

O închidere poate accepta parametri. Lista de identificatori este separată prin virgulă, cu o săgeată (->) care marchează sfârșitul listei de parametri.

def myClosure = {
    a, b, c ->
    y = a + b + c
    println y
}
myClosure(1, 2, 3)

ieșire:

6

O închidere poate returna și o valoare.

def myClosure = {
    a, b, c ->
    return (a + b + c)
}
println(myClosure(1, 2, 3))

ieșire:

6

Când nu declarați o listă de parametri, Groovy furnizează un singur parametru implicit numit itCapacele pot fi, de asemenea, transferate către alte capace, exact așa cum funcționează metodele de colectare, cum ar fi each, collect și findAll muncă.

Groovy Instrumente

Vom analiza trei instrumente importante livrate împreună cu Groovy distribuție:

  1. groovy: execută cod interactiv din linia de comandă.
  2. Consolă groovy: o fereastră grafică pentru execuția interactivă a codului.
  3. macabru: execută Groovy fișiere script, în același mod în care ați rula un Perl sau Python script-ul.

Groovysh

  • O interfață de comandă (shell) pentru linia de comandă.
  • Te ajută să execuți Groovy cod interactiv.
  • Vă permite să introduceți instrucțiuni individuale sau scripturi întregi.

Captura de ecran de mai jos prezintă evaluarea groovy a expresiilor, linie cu linie.

shell-ul de linie de comandă groovysh rulează Groovy Declarații

Groovy Consoleze

  • O interfață Swing care acționează ca o interfață minimalistă Groovy editor de dezvoltare.
  • Vă permite să scrieți și să rulați Groovy cod interactiv.
  • Te ajută să încarci și să rulezi Groovy fișiere script.

În Groovy În consola de mai jos, scriptul este tastat în panoul superior, iar rezultatul apare în panoul inferior.

Groovy Editor Swing în consolă cu script și panouri de ieșire

Groovy

groovy comanda este procesorul care rulează Groovy programe și scripturi. Compilează sursa în bytecode în memorie și o execută într-un singur pas, deci nu este necesară o etapă separată de construire. Poate fi folosit și pentru a testa programe simple Groovy expresii direct din terminal, așa cum se arată mai jos.

comandă groovy care execută un script din terminal

Unde Groovy Este utilizat în proiecte reale

Majoritatea dezvoltatorilor se întâlnesc Groovy nu ca un limbaj de sine stătător, ci ca stratul de scripting din interiorul unui instrument pe care îl rulează deja. Cunoașterea locului în care apare face ca sintaxa de mai sus să fie mult mai ușor de plasat.

Instrument Cum Groovy este utilizat
Jenkins Conductele declarative și scriptate sunt scrise într-un Groovy DSL și bibliotecile partajate sunt simple Groovy clase.
Gradle Clasic build.gradle fișierul este un Groovy script, motiv pentru care se citește mai compact decât un Maven POM sau un Furnică fișier de construire.
SoapUI Groovy Pașii de script și aserțiunile de script determină verificări dinamice ale datelor de solicitare și ale răspunsurilor personalizate.
Spock A Groovy cadru de testare ale cărui blocuri și tabele de date de tip „given-when-then” sunt utilizate pe scară largă pentru testele unitare JVM.
Elasticsearch și Grails Grails construiește aplicații web complete pe Groovyși mai multe instrumente de date acceptă Groovy pentru scripturi personalizate.

In testarea automatizării echipelor, acest lucru contează de două ori: jobul CI care rulează suita și testele în sine pot fi ambele Groovy, deci un singur limbaj acoperă legătura dintre conducte și logica de aserțiune.

Groovy Vs. Java

Groovy Java
Modificatorul de acces implicit este public, deci o metodă fără modificator este accesibilă în afara clasei și pachetului său. Modificatorul de acces implicit este package-private, deci câmpurile, metodele și clasele fără modificator sunt vizibile doar în pachetul lor.
Obiectivele getter și setter sunt generate automat pentru proprietățile clasei. Trebuie să definești singur metodele getter și setter pentru câmpuri.
Groovy permite substituția de variabile în șiruri între ghilimele. Java nu acceptă interpolarea șirurilor de caractere.
Informațiile despre tip sunt opționale. Informațiile despre tip sunt obligatorii.
Instrucțiunile nu trebuie să se termine cu punct și virgulă. Fiecare instrucțiune se termină cu punct și virgulă.
Groovy încapălă automat fiecare script dintr-o clasă Script generată. Ai nevoie de o metodă principală pentru a face o clasă executabilă.
Totul este public și dinamic în mod implicit, dar @CompileStatic restaurări Java-nivelarea vitezei și verificarea. Totul este compilat static și verificat în timpul construcției.

Mituri despre Groovy

Mit Realitate
Groovy poate fi folosit doar pentru scripting. Este excelent pentru scripting, dar se compilează și în clase obișnuite pe care le puteți livra în orice aplicație JVM.
Groovy se referă la închideri, deci este doar un limbaj de programare funcțional. Groovy împrumută idei din limbaje funcționale precum Lisp și Clojure, dar rămâne în esență un limbaj orientat pe obiecte.
Groovy merită utilizat doar pentru dezvoltarea bazată pe teste. Groovy este o alegere excelentă pentru TDD cu Spock, dar acesta nu este cu siguranță singurul motiv pentru a-l folosi.
Ai nevoie doar Groovy dacă vrei să folosești Grails. Grails este un framework puternic de dezvoltare web, dar Gradle, Jenkinsși Spock folosesc toți Groovy fără.

Contra utilizării Groovy

  • JVM și Groovy Timpul de pornire al scriptului este lent, ceea ce limitează utilizarea sa pentru scriptarea rapidă la nivel de sistem de operare.
  • Groovy nu este adoptat pe scară largă în afara comunităților centrate pe JVM.
  • Este incomod de utilizat Groovy fără un IDE care să îi înțeleagă caracteristicile dinamice.
  • Dispecerizarea dinamică poate face Groovy cod mai lent decât echivalentul Java cod dacă nu aplici @CompileStatic.
  • Groovy programele pot necesita mai multă memorie decât cele obișnuite Java programe.
  • Cunoștințe de Java este practic o condiție prealabilă.

Odată ce te simți confortabil cu Groovy sintaxă, următorul pas natural este ecosistemul din jurul său. Consolidați elementele fundamentale cu Java tutorial, apoi vezi cum Groovy Scripturile determină build-uri și implementări în Jenkins, comparați instrumentele de construire cu Maven și Apache Antși explorează cum Groovy afirmațiile se încadrează în Selenium și suite de teste API.

Întrebări frecvente

Groovy 5.0 vizează JDK 11 și versiuni ulterioare. Groovy Versiunea 4.0 încă suportă JDK 8, iar versiunea în curs de dezvoltare Groovy Versiunea 6.0 vizează JDK 17. Verificați tabelul cu cerințele de sistem de pe pagina oficială de descărcare Apache înainte de a vă înscrie într-o versiune.

Nu. Comanda groovy compilează un fișier .groovy în bytecode în memorie și îl rulează imediat. Puteți totuși compila în avans cu groovyc atunci când doriți ca fișierele .class reutilizabile să fie împachetate într-un Java aplicație.

Da. Apache Groovy este lansat sub licența Apache 2.0, deci utilizarea comercială, modificarea și redistribuirea sunt permise gratuit. Doar obligațiile obișnuite de atribuire și notificare a licenței se aplică versiunilor redistribuite.

Groovy este limbajul de programare. Grails este un framework web full-stack scris în Groovy. Puteți folosi Groovy pentru fișiere de compilare, conducte sau teste fără a instala vreodată Grails, dar Grails nu poate exista fără Groovy.

Acestea gestionează bine expresii comune precum închideri, metode de colectare și pași din conductă. Rulați întotdeauna scripturile generate mai întâi în groovyConsole, deoarece modelele se amestecă uneori. Java sintaxă cu Groovy scurtături sau să inventeze metode care nu există.

Lipiți stiva trace și scriptul într-un asistent pentru a scoate la iveală cauze probabile, cum ar fi o GroovyCastException, o aprobare sandbox lipsă sau un delegat de închidere greșit. Tratați fiecare sugestie ca pe o ipoteză și confirmați-o în raport cu jurnalul de compilare real.

Rezumați această postare cu: