Gradle
| Gradle
| |
|---|---|
|
| |
| Basis data
| |
| Onderhouder | Gradle Inc. |
| Jaar van uitgave | 2007 |
| Huidige versie |
7.2 ( 17 augustus 2021 ) |
| besturingssysteem | Platformonafhankelijk |
| programmeertaal | Java , Groovy , Kotlin |
| categorie | Build beheer gereedschap |
| Vergunning | Apache-licentie, versie 2.0 |
| gradle.org | |
Gradle is een Java- gebaseerde build beheer automatisering tool, vergelijkbaar met Apache Ant en Apache Maven . Gradle gebruikt een op Groovy gebaseerde domeinspecifieke taal (DSL) om de te bouwen projecten te beschrijven. In tegenstelling tot Maven-projectdefinities ( pom.xml), zijn Gradle-scripts direct uitvoerbare code.
Gradle is ontworpen voor builds van softwaresystemen die uit verschillende projecten bestaan. Vanuit de filosofie 'expect the onverwachte' is getracht het in Maven gevestigde 'build-by-convention'-principe (een variant van ' convention before configuration ') te combineren met de flexibiliteit van Ant.
Het bouwen van grote projecten kan erg tijdrovend zijn. Daarom ondersteunt Gradle zowel incrementele als parallelle bouwprocessen. Met de eerste kunnen alleen die onderdelen van een software worden gebouwd die zijn gewijzigd of zijn gebaseerd op gewijzigde onderdelen, terwijl de laatste ervoor zorgt dat bepaalde taken tijdens de build (bijvoorbeeld de tests) parallel kunnen worden uitgevoerd op meerdere CPU's of computers. Hierdoor kan een veel hogere snelheid van het creatieproces worden bereikt.
Gradle wordt gebruikt door een aantal bekende frameworks voor hun build - waaronder Hibernate , Grails , Groovy evenals Spring Integration en Spring Security . Het Android- systeem is sinds medio 2013 toegevoegd . Sindsdien is de tool voornamelijk uitgebreid om de constructie van zogenaamde "native" systemen te ondersteunen die niet op het Java-platform zijn gebaseerd. De programmeertalen C++, C, Objective-C en Assembler worden hier ondersteund.
Conceptie en plug-in architectuur
Het bouwconcept van Gradle neemt de standaardconventies over die door Maven zijn geïntroduceerd ("conventie over configuratie") voor de directorylay-out van de projectbronnen, evenals de gebruikelijke fasen voor het bouwen van een (Java) project (validatie, compilatie, testuitvoering, archiefcreatie en rapport generatie, distributie). Het buildbestand kan daarom minimaal zijn en uit een enkele regel ( apply plugin: 'java') bestaan in een eenvoudig Java - project . Gradle past ook grotendeels het Maven-concept toe om de afhankelijkheden van een project op andere projecten of bibliotheken van derden te beheren. Gradle kan vertrouwen op de veelgebruikte Maven-repositories (lokale, zakelijke en internetrepositories). Als alternatief kan de gebruiker ook Ivy- rapporten gebruiken.
Net als Maven bestaat Gradle uit een abstracte kern en een groot aantal plug-ins en kan dankzij deze structuur op vele manieren worden uitgebreid. Zelfs de implementatie van de Java-build is gebaseerd op een plug-in voor Java. Met deze architectuur biedt Gradle de mogelijkheid om processen te bouwen voor elk softwareplatform en geeft het de gebruiker de mogelijkheid om zijn "niet-conventionele" ideeën over te brengen op de tool. Gradle levert af fabriek plug-ins die naast Java ook Groovy, Scala en C++ projecten kunnen bouwen. Daarnaast wordt de build ondersteund door Java Enterprise Archives (WAR, EAR). Met aanvullende plug-ins kan de softwarekwaliteit ( bijv. FindBugs , PMD , Checkstyle ) worden bewaakt door geautomatiseerde controles en het genereren van bijbehorende rapporten.
De plug-ins die bij Gradle worden geleverd, zijn voornamelijk gemaakt voor de ontwikkeling en inzet van Java-, Groovy- en Scala-projecten, maar kunnen ook voor andere programmeertalen en workflows worden gebruikt. Sinds het Android-team koos voor Gradle als bouwsysteem, hebben de ontwikkelaars vooral de ondersteuning van een bouwmodel voor native programmeeromgevingen gepromoot.
Gradle DSL
In tegenstelling tot de conventies van Apache Maven en zijn XML-declaraties, werkt de gebruiker met de domeinspecifieke taal van Gradles ( domeinspecifieke taal , alleen DSL) , die hij - als een Gradle - buildbestand altijd een Groovy-script is - uitbreidt of de standaard kan wijzigen eigendommen. Hij kan ook zijn eigen build-wijzigingen schrijven met Groovy-code of vooraf gedefinieerde standaarden overschrijven en aanpassen aan zijn eigen behoeften. Gradle-gebruikers kunnen beide stijlen gebruiken: de declaratieve benadering van Maven, gebaseerd op standaardconventies, en de meer dwingende benadering van Ant, waarbij de gebruiker ook alles tot in detail moet definiëren.
Op basis van deze DSL-taal is de gebruiker niet gedwongen om eerst Groovy te leren voordat hij Gradle-scripts probeert te bouwen.
Sinds Gradle 5.0 wordt ook een Kotlin DSL aangeboden als alternatief voor de Groovy DSL; dit maakt met name een verbeterde auto-aanvulling in de ontwikkelomgevingen mogelijk.
De graduele opbouw
Gradle kent twee hoofdfasen van buildverwerking die het altijd doorloopt: configuratie en uitvoering. Tijdens de configuratiecyclus wordt de hele builddefinitie doorlopen om de dependencygraph (DAG) te genereren, die de volgorde van alle te verwerken stappen bevat. In het tweede deel wordt deze grafiek doorlopen voor de gewenste taken. Zowel de configuratie als de uitvoering zijn voor de gebruiker toegankelijk via een open API .
Het bouwproces, dat wordt beschreven door de taakgrafiek, bestaat uit een opeenvolging van taken die hiërarchisch van elkaar afhankelijk zijn en waarbij een opvolger pas wordt uitgevoerd als zijn voorgangers met succes zijn afgerond. De taak 'test' wordt bijvoorbeeld alleen uitgevoerd als de taken 'compile', 'process-resources', 'classes', 'testCompile' eerder zonder fouten zijn uitgevoerd.
Bestanden maken
Gradle gebruikt voornamelijk drie aangepaste bestanden voor een eenvoudige build:
-
build.gradle- de definitie van de build op basis van de Gradle DSL met alle taken en afhankelijkheden van een project (een multiproject heeft één zo'n buildbestand per project, dat kort kan worden gehouden door de eigenschappen van zijn "vader" buildscript te erven). -
settings.gradle(optioneel) - in het geval van een multiproject worden hier de deelnemende deelprojecten gespecificeerd. -
gradle.properties(optioneel) - een lijst met eigenschappen die geldig zijn voor de projectspecifieke Gradle-initialisatie van een build.
Gradle-scripts kunnen Groovy-code rechtstreeks bevatten of worden geïmplementeerd door een Groovy-klasse. Als alternatief kunnen ze worden geladen vanuit een Maven-repository als een build-afhankelijkheid.
Eenvoudige voorbeelden voor het bestand "build.gradle"
Het eenvoudigste buildscript voor een Java-project ziet er als volgt uit:
apply plugin: 'java'
Voorbeeld voor de definitie van een aparte taak:
task hello << {
println 'Dies ist der Hello-Task'
}
Een taak kan worden aangeroepen via de opdrachtregel:
$ gradle hello
IDE-ondersteuning
Gradle plug-ins zijn beschikbaar voor veel geïntegreerde ontwikkelomgevingen , waaronder NetBeans , IntelliJ IDEA en Eclipse . Als alternatief kunnen Eclipse- en IDEA-projectbestanden worden gegenereerd met behulp van Gradle-plug-ins.
meer details
Apache Ant-builds kunnen door build.xmlGradle worden vervangen door de bestanden in Gradle te importeren. Ant-taken kunnen ook rechtstreeks vanaf de DSL worden aangeroepen. Gradle kan ook artefacten in Apache Maven-repositories als afhankelijkheden gebruiken en daar artefacten publiceren. Gradle ondersteunt ook Apache Ivy-repositories. Met behulp van de Build Init-plug-in kunnen Maven-projecten worden geconverteerd naar Gradle.
literatuur
- Tim Berglund, Matthew [J.] McCullough: bouwen en testen met Gradle . O'Reilly Media, Sebastopol, CA 2011, ISBN 978-1-4493-0463-8 .
- Joachim Baumann: Gradle: een compacte introductie tot het buildbeheersysteem . d.punkt.verlag, 2013, ISBN 978-3-86490-049-5 .
- Benjamin Muschko: Gradle in actie . Manning-publicaties, 2014, ISBN 978-1-61729-130-2 .
- Hubert Klein Ikkink: Gids voor effectieve implementatie van Gradle . Packt Publishing, 2012, ISBN 1-84951-810-6
- Etienne Studer: Een introductie tot Gradle voor Java-ontwikkelaars , Gradle zal de build al rocken en Enterprise Gradle , 3-delige serie over Gradle in Java Magazine 1 tot 3/2011
web links
Individueel bewijs
- ↑ github.com .
- ↑ Het geleidelijke Open Source Project op Open Hub: Talenpagina . In: Hub openen . (bezocht op 18 juli 2018).
- ↑ Het geleidelijke Open Source Project op Open Hub: Licentiespagina . In: Hub openen . (bezocht op 18 juli 2018).
- ↑ Gradle-startpagina
- ↑ heise online: Gradle 5.0 ondersteunt Java 11 december 3, 2018, geraadpleegd op 24 juni 2021 .
- ^ Gradle Kotlin DSL-primer. In: Gradle-gebruikershandleiding. Ontvangen 24 juni 2021 .
- ^ De Java-plug-in. In: Gradle-gebruikershandleiding. Ontvangen 24 juni 2021 .
- ↑ Init-plug-in bouwen. In: Gradle-gebruikershandleiding. Ontvangen 24 juni 2021 .