Gradle

Gradle

Basisdaten

Hauptentwickler Gradle Inc.
Entwickler Gradle Inc., Adam Murdoch[1], Daz DeBoer[2], Bo Zhang[2]
Erscheinungsjahr 2008[3]
Aktuelle Version 8.12[4]
(20. Dezember 2024)
Aktuelle Vorabversion 5.6 RC1[5]
(29. Juli 2019)
Betriebssystem Plattformunabhängig
Programmier­sprache Java, Groovy[6], Kotlin
Kategorie Build-Management-Tool
Lizenz Apache-Lizenz, Version 2.0[7]
gradle.org

Gradle ist ein auf Java basierendes Build-Management-Automatisierungs-Tool, vergleichbar mit Apache Ant und Apache Maven. Gradle nutzt eine auf Groovy basierende domänenspezifische Sprache (DSL) zur Beschreibung der zu bauenden Projekte. Im Gegensatz zu Maven-Projektdefinitionen (pom.xml) sind Gradle-Skripte direkt ausführbarer Code.

Gradle wurde für Builds von Softwaresystemen entworfen, welche aus einer Vielzahl von Projekten bestehen. Basierend auf der Philosophie „Erwarte das Unerwartete“ wurde versucht, das in Maven etablierte „build-by-convention“-Prinzip (eine Variante von „Konvention vor Konfiguration“) mit der Flexibilität von Ant zusammenzubringen.

Builds umfangreicher Projekte können sehr viel Zeit in Anspruch nehmen. Darum unterstützt Gradle sowohl inkrementelle als auch parallel ablaufende Build-Prozesse. Erstere ermöglichen es, dass nur die Teile einer Software gebaut werden, die verändert wurden oder auf veränderten Teilen beruhen, zweiteres ermöglicht es, dass bestimmte Tasks beim Build (beispielsweise die Tests) parallel auf mehreren CPUs oder Rechnern laufen. Damit lässt sich eine wesentlich höhere Geschwindigkeit des Erstellprozesses erreichen.

Gradle wird von einigen bekannten Frameworks für deren Build eingesetzt – darunter Hibernate, Grails, Groovy sowie Spring Integration und Spring Security.[8] Seit Mitte 2013 hinzugekommen ist das Android-System. Seitdem wird das Tool vor allem zur Unterstützung zum Bau sogenannter „nativer“ Systeme ausgebaut, welche nicht auf der Java-Plattform basieren. Unterstützt werden hier die Programmiersprachen C++, C, Objective-C und Assembler.

Konzeption und Plugin-Architektur

Gradles Build-Konzept übernimmt die von Maven eingeführten Standardkonventionen („convention over configuration“) für das Verzeichnislayout der Projektquellen sowie die üblichen Phasen für den Bau eines (Java-)Projekts (Validieren, Kompilieren, Testausführung, Archiv-Erstellung und Report-Generierung, Verteilung). Die Build-Datei kann daher minimal ausfallen und bei einem simplen Java-Projekt aus einer einzigen Zeile (apply plugin: 'java') bestehen. Ebenso übernimmt Gradle weitgehend das Maven-Konzept des Managements der Abhängigkeiten eines Projekts von anderen Projekten oder Fremdbibliotheken. Gradle kann sich hierbei auf die weitverbreiteten Maven Repositories (lokale, Unternehmens- und Internet-Repositories) stützen. Alternativ kann der Anwender aber auch auf Ivy-Repositories zurückgreifen.

Ähnlich wie Maven besteht Gradle aus einem abstrakten Kern und einer Vielzahl von Plug-ins und ist durch diese Struktur vielfältig erweiterbar. Selbst die Implementierung des Java-Builds basiert auf einem Plugin für Java. Mit dieser Architektur bietet Gradle die Möglichkeit, Buildprozesse für beliebige Software-Plattformen bewerkstelligen zu können, und liefert dem Anwender die Möglichkeit, seine „nicht-konventionellen“ Vorstellungen dem Tool beizubringen. Gradle liefert von Hause aus Plug-ins mit, die neben Java-Projekten Groovy-, Scala- und C++- Projekte bauen können. Daneben wird der Build von Java Enterprise Archiven (WAR, EAR) unterstützt. Weitere Plug-ins erlauben die Überwachung der Softwarequalität (beispielsweise FindBugs, PMD, Checkstyle) durch automatisierte Checks und Generierung entsprechender Reports.

Die mit Gradle mitgelieferten Plug-ins sind zwar hauptsächlich für die Entwicklung und das Deployment von Java-, Groovy- und Scala-Projekten gemacht, es kann aber auch für andere Programmiersprachen und Workflows eingesetzt werden. Seit der Entscheidung des Android-Teams für Gradle als Build-System wird von den Entwicklern hauptsächlich die Unterstützung eines Buildmodells für native Programmierumgebungen vorangetrieben.

Gradle DSL

Im Gegensatz zu den Konventionen von Apache Maven und dessen XML-Deklarationen arbeitet der Anwender mit Gradles Domänenspezifischer Sprache (domain-specific language, kurz DSL), die er – da eine Gradle-Build-Datei immer ein Groovy-Skript darstellt – erweitern oder in den Standardeigenschaften ändern kann. Ebenso kann er mit Groovy-Code eigene Build-Änderungen schreiben oder vordefinierte Standards überschreiben und eigenen Belangen anpassen. Der Gradle-Anwender kann beide Stile verwenden: den deklarativen, auf Standardkonventionen beruhenden Ansatz von Maven und den eher imperativen Ansatz von Ant, bei dem der Anwender aber auch alles im Detail definieren muss.

Der Anwender ist auf Basis dieser DSL-Sprache nicht gezwungen, zuerst einmal Groovy lernen zu müssen, bevor er sich an Gradle-Buildskripte heranwagt.

Seit Gradle 5.0 wird zusätzlich eine Kotlin DSL als Alternative zur Groovy DSL angeboten; diese erlaubt insbesondere eine verbesserte Autovervollständigung in den Entwicklungsumgebungen.[9][10]

Der Gradle-Build

Gradle kennt zwei Hauptphasen der Buildverarbeitung, die immer durchlaufen werden: Konfiguration und Ausführung. Während des Konfigurations-Zyklus wird die gesamte Build-Definition durchlaufen, um den Abhängigkeitsgraphen (DAG) zu erzeugen, der die Reihenfolge aller abzuarbeitenden Schritte enthält. Im zweiten Teil wird dieser Graph für die gewünschten Tasks durchlaufen. Sowohl die Konfiguration als auch die Ausführung sind dem Anwender durch eine offene API zugänglich.

Der Buildprozess, der durch den Task-Graphen beschrieben wird, besteht aus einer Abfolge von Tasks, die hierarchisch voneinander abhängen, und wo ein Nachfolger nur ausgeführt wird, wenn seine Vorgänger erfolgreich durchlaufen wurden. So wird beispielsweise die Task ‚test‘ nur ausgeführt, wenn zuvor die Tasks ‚compile‘, ‚process-resources‘, ‚classes‘, ‚testCompile‘ ohne Fehler durchlaufen wurden.

Build-Dateien

Gradle nutzt für einen einfachen Build hauptsächlich drei benutzerdefinierte Dateien:

  • build.gradle – die auf der Gradle-DSL beruhende Definition des Builds mit allen Tasks und Abhängigkeiten eines Projekts (ein Multiprojekt hat pro Projekt eine solche Build-Datei, die durch Vererbung der Eigenschaften von ihrem „Vater“-Buildskript kurz gehalten werden können).
  • settings.gradle (optional) – bei einem Multiprojekt werden hier die teilnehmenden Unterprojekte festgelegt.
  • gradle.properties (optional) – eine Liste von Properties, die für die projektspezifische Gradle-Initialisierung eines Builds gültig sind.

Gradle-Skripte können unmittelbar Groovy-Code enthalten oder durch eine Groovy-Klasse implementiert werden. Alternativ lassen sie sich als Build-Abhängigkeit aus einem Maven-Repository laden.

Einfache Beispiele für die Datei „build.gradle“

Das einfachste Buildskript für ein Java-Projekt sieht so aus:[11]

apply plugin: 'java'

Beispiel für die Definition einer eigenen Task:

task hello << {
    println 'Dies ist der Hello-Task'
}

Eine Task kann über die Kommandozeile aufgerufen werden:

$ gradle hello

IDE-Unterstützung

Für viele Integrierte Entwicklungsumgebungen gibt es Gradle-Plug-ins, darunter NetBeans, IntelliJ IDEA und Eclipse. Alternativ können über Gradle-Plug-ins Eclipse- und IDEA-Projektdateien erzeugt werden.

Weitere Details

Apache-Ant-Builds können von Gradle abgelöst werden, indem die build.xml-Dateien nach Gradle importiert werden. Auch können Ant-Tasks direkt aus der DSL aufgerufen werden. Ebenso kann Gradle Artefakte in Apache-Maven-Repositories sowohl als Abhängigkeiten konsumieren als auch Artefakte dort publizieren. Weiterhin werden Apache-Ivy-Repositories von Gradle unterstützt. Mittels des Build Init Plugin können Maven-Projekte nach Gradle konvertiert werden.[12]

Literatur

  • Tim Berglund, Matthew [J.] McCullough: Building and Testing with Gradle. O’Reilly Media, Sebastopol CA 2011, ISBN 978-1-4493-0463-8.
  • Joachim Baumann: Gradle: Ein kompakter Einstieg in das Build-Management-System. d.punkt.verlag, 2013, ISBN 978-3-86490-049-5.
  • Benjamin Muschko: Gradle in Action. Manning Publications, 2014, ISBN 978-1-61729-130-2.
  • Hubert Klein Ikkink: Gradle Effective Implementation Guide. Packt Publishing, 2012, ISBN 1-84951-810-6
  • Etienne Studer: Ein Einstieg in Gradle für Java-Entwickler, Gradle wird den Build schon schaukeln und Enterprise Gradle, 3-teilige Serie über Gradle im Java Magazin 1 bis 3/2011

Einzelnachweise

  1. github.com.
  2. a b github.com.
  3. gradle.com.
  4. github.com.
  5. github.com.
  6. The gradle Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 18. Juli 2018).
  7. The gradle Open Source Project on Open Hub: Licenses Page. In: Open Hub. (abgerufen am 18. Juli 2018).
  8. Gradle Homepage
  9. heise online: Gradle 5.0 unterstützt Java 11. 3. Dezember 2018, abgerufen am 24. Juni 2021.
  10. Gradle Kotlin DSL Primer. In: Gradle User Manual. Abgerufen am 24. Juni 2021.
  11. The Java Plugin. In: Gradle User Manual. Abgerufen am 24. Juni 2021.
  12. Build Init Plugin. In: Gradle User Manual. Abgerufen am 24. Juni 2021.

Read other articles:

BulurejoDesaKantor Desa BulurejoNegara IndonesiaProvinsiJawa TengahKabupatenKaranganyarKecamatanGondangrejoKode pos57188Kode Kemendagri33.13.13.2005 Luas... km²Jumlah penduduk... jiwaKepadatan... jiwa/km² Bulurejo adalah desa di kecamatan Gondangrejo, Karanganyar, Jawa Tengah, Indonesia. Pembagian wilayah Desa Bulurejo terdiri dari dusun/dukuh: Bulurejo Cinet Grumbulrejo Gunungduk Jengglong Mendungsari Sanggrahan Tempel Watudakon lbsKecamatan Gondangrejo, Kabupaten Karanganyar, Jawa Te...

 

Sketsa reaktor bola kerikil. Kerikil grafit untuk reaktor Struktur dan komposisi bola grafit dalam reaktor nuklir pebble bed. Reaktor bola kerikil atau pebble-bed reactor (PBR) adalah desain untuk reaktor nuklir berpendingin gas dengan moderasi grafit. Ini adalah jenis reaktor suhu sangat tinggi (VHTR), salah satu dari enam kelas reaktor nuklir dalam inisiatif Generasi IV.[1][2][3][4] Rancangan dasar reaktor pebble-bed menampilkan elemen bahan bakar bulat yang ...

 

120 anggota Knesset kesebelas terpilih pada 23 Juli 1984. Daftar anggota Anggota Jacques Amir Adiel Amorai Nava Arad Shoshana Arbeli-Almozlino Yitzhak Artzi Haim Bar-Lev Uzi Baram Dov Ben-Meir Abdulwahab Darawshe Simcha Dinitz Abba Eban Rafael Edri Elazar Granot Haika Grossman Mordechai Gur Menachem Hacohen Aharon Harel Michael Harish Shlomo Hillel Avraham Katz-Oz Yisrael Kessar David Libai Amnon Linn Aharon Nahmias Ora Namir Yitzhak Navon Aryeh Nehemkin Shimon Peres Yitzhak Peretz Yitzhak Ra...

العلاقات الأسترالية الكورية الجنوبية أستراليا كوريا الجنوبية   أستراليا   كوريا الجنوبية تعديل مصدري - تعديل   العلاقات الأسترالية الكورية الجنوبية هي العلاقات الثنائية التي تجمع بين أستراليا وكوريا الجنوبية.[1][2][3][4][5] مقارنة بين البلدي�...

 

Not to be confused with The Mill (Rembrandt print). The MillArtistRembrandt Harmenszoon van RijnYear1645/48MediumOil on canvasDimensions87.6 cm × 105.6 cm (34.5 in × 41.6 in)LocationNational Gallery of Art, Washington DC The Mill is a painting by Dutch baroque artist Rembrandt Harmenszoon van Rijn. It is in the permanent collection of the National Gallery of Art in Washington DC.[1] For a long time, the attribution to Rembrandt was regarded ...

 

Guido de' RossiStemma dei Rossi di San SecondoNascitaSan Secondo Parmense, 1440 circa MorteVenezia, 1490 Dati militariPaese servito Ducato di Milano Repubblica di Venezia CampagneBattaglia contro il ducato di Milano voci di militari presenti su Wikipedia Manuale Guido de' Rossi (San Secondo Parmense, circa 1440 – Venezia, 1490) è stato un condottiero italiano, erede designato di Pier Maria II de' Rossi Conte di San Secondo. Indice 1 Biografia 2 Discendenza 3 Curiosità 4 ...

David AzulaiLahir5 May 1954Tempat lahirMeknes, MarokoTahun aliyah1963Meninggal dunia30 Oktober 2018(2018-10-30) (umur 64)Knesset14, 15, 16, 17, 18, 19, 20Faksi yang diwakili di Knesset1996–2018ShasJabatan menteri2015–2018Menteri Layanan Keagamaan David Azulai (Ibrani: דוד אזולאי; 5 Mei 1954 – 30 Oktober 2018) adalah seorang politikus Israel yang menjabat sebagai anggota Knesset untuk Shas selama lebih dari 20 tahun dari 1996 dan 2018. Ia juga menjadi Menteri ...

 

هذه المقالة بحاجة لصندوق معلومات. فضلًا ساعد في تحسين هذه المقالة بإضافة صندوق معلومات مخصص إليها. نينتندو إس-إس إم بي نينتندو إس-إس إم بي (بالإنجليزية: Nintendo S-SMP)‏ هي وحدة المعالجة المركزية للصوت في جهاز الألعاب سوبر نينتندو إنترتينمنت سيستم. تتكون من معالج إشارة رقمي 16 بت و�...

 

1987 single by Cliff Richard Remember MeSingle by Cliff Richardfrom the album Always Guaranteed B-sideAnother Christmas DayReleased19 October 1987 (1987-10-19)[1]RecordedSeptember 1986StudioRG Jones, LondonGenrePop rockLength3:52LabelEMISongwriter(s)Alan TarneyProducer(s)Alan TarneyCliff Richard singles chronology Some People (1987) Remember Me (1987) Two Hearts (1988) Music videoRemember Me on YouTube Remember Me is a song recorded by English singer Cliff Richard a...

Cet article est une ébauche concernant un parc de loisirs. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Gröna Lund Ouverture 3 août 1883[1] Pays Suède Comté Comté de Stockholm Ville Stockholm Propriétaire Parks & Resorts Scandinavia Type de parc parc d'attractions Nombre d'attractions Total : 31Nb de montagnes russes : 7 Nombre de visiteurs 1,676 million[2] (2019) Site...

 

German mathematician (born 1948) This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Gisbert Wüstholz – news · newspapers · books · scholar · JSTOR (October 2023) (Learn how and when to remove this...

 

Family of freshwater fish Not to be confused with Cyprididae, a family of freshwater ostracods. CyprinidaeTemporal range: Eocene - Holocene PreꞒ Ꞓ O S D C P T J K Pg N The common carp, Cyprinus carpio Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Actinopterygii Order: Cypriniformes Superfamily: Cyprinoidea Family: CyprinidaeRafinesque, 1815 Type genus CyprinusLinnaeus, 1758 Subfamilies Acheilognathinae Barbinae Cyprininae Danioninae Gobioninae Labeo...

West Marina redirects here. For the former rail station, see St Leonards West Marina. For the current station, see West St Leonards Station. Human settlement in EnglandBulverhythe (or West St Leonards)West St LeonardsDistrictHastingsShire countyEast SussexRegionSouth EastCountryEnglandSovereign stateUnited KingdomPost townST. LEONARDS-ON-SEAPostcode districtTN38Dialling code01424PoliceSussexFireEast SussexAmbulanceSouth East Coast List of places UK England East Sussex Bulv...

 

OrnithologieExamen des caractéristiques d'une Huppe fasciée (Upupa epops) baguée au Portugal.Partie de Zoologie des vertébrés (en)Pratiqué par OrnithologueObjet Oiseaumodifier - modifier le code - modifier Wikidata Étude de tête d'oiseau (1867) - les premiers pas vers l'ornithologie... (peinture de William Bouguereau - XIXe siècle) L'ornithologie (du grec ancien ὄρνις, ὄρνιθος / órnis, órnithos, « oiseau » et λόγος / lógos, « ...

 

Organisation administrative du royaume de France durant l'Ancien Régime. Les états provinciaux sont des assemblées réunissant les députés des différentes circonscriptions territoriales d'une province afin de délibérer et de décider dans le domaine de la fiscalité. Ces circonscriptions sont de trois ordres : les seigneuries laïques importantes (appelées souvent baronnies), les seigneuries ecclésiastiques, et les seigneuries urbaines des villes ayant le privilège de haute ju...

Shinigami-kunGenreDramaPemeranSatoshi OhnoMirei KiritaniMasaki SudaYutaka MatsushigeLagu penutupDaremo Shiranai oleh ArashiNegara asalJepangBahasa asliBahasa JepangJmlh. musim1Jmlh. episode9ProduksiProduserSō ĪdaKimiko NishikawaJun ShimoyamaRilis asliJaringanTV AsahiRilis18 April (2014-04-18) –20 Juni 2014 (2014-06-20) Shinigami-kun (死神くんcode: ja is deprecated ) adalah sebuah Drama televisi Jepang yang merupakan adaptasi dari manga dengan judul yang sama karangan K...

 

Questa voce sull'argomento centri abitati di Castiglia e León è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Arenas de San Pedrocomune Arenas de San Pedro – Veduta LocalizzazioneStato Spagna Comunità autonoma Castiglia e León Provincia Ávila TerritorioCoordinate40°12′N 5°05′W40°12′N, 5°05′W (Arenas de San Pedro) Altitudine820 m s.l.m. Superficie195 km² Abitanti6 778 (2007) Densità34,76 ab./km² A...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: International Longshoremen's Association – news · newspapers · books · scholar · JSTOR (January 2009) (Learn how and when to remove this message) North American labor union ILAInternational Longshoremen's AssociationThe traditional logo of the ILA, depicting a ...

実業家の「小林公平」とは別人です。 この記事には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2018年4月) 日本の政治家小林 孝平こばやし こうへい生年月日 1908年7月15日出生地 新潟県長岡市没年月日 (1991-04-13) 1991年4月13日(...

 

Genus of flowering plants Allolepis Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Monocots Clade: Commelinids Order: Poales Family: Poaceae Subfamily: Chloridoideae Tribe: Cynodonteae Genus: AllolepisSoderstr. & H.F.Decker Species: A. texana Binomial name Allolepis texana(Vasey) Soderstr. & H.F.Decker Synonyms[1] Poa texana Vasey Sieglingia wrightii Vasey Distichlis texana (Vasey) Scribn. Allolepis is a genus of North American p...