Gradle

Gradle
software
Logo
Logo
GenereAutomazione dello sviluppo
SviluppatoreGradle Inc., Adam Murdoch, Daz DeBoer e Bo Zhang
Data prima versione2008
Ultima versione8.12 (20 dicembre 2024)
Sistema operativoMultipiattaforma
LinguaggioApache Groovy
Java
Kotlin
Licenzalicenza Apache 2.0
(licenza libera)
Sito webgradle.org

Gradle è un sistema open source per l'automazione dello sviluppo fondato sulle idee di Apache Ant e Apache Maven, che introduce un domain-specific language (DSL) basato su Groovy[1], al posto della modalità XML usata da Apache Maven per dichiarare la configurazione del progetto. Gli script Gradle possono essere eseguiti direttamente, in contrasto con le definizioni dei progetti Apache Maven (pom.xml).

Al contrario di Apache Maven, che definisce il ciclo di vita di un processo, e di Apache Ant, dove l'ordine dei compiti (detti target) è determinato dalle dipendenze (depends on), Gradle utilizza un grafo aciclico diretto (DAG) per determinare l'ordine in cui i processi possono essere eseguiti.

Gradle è stato progettato per sviluppi multi-progetto che possono crescere fino a divenire abbastanza grandi e supporta sviluppi incrementali determinando in modo intelligente quali parti del build tree sono aggiornate ("up-to-date"), in modo che tutti i processi che dipendono solo da quelle parti non avranno bisogno di essere ri-eseguiti; così facendo, il software riduce significativamente il tempo di costruzione del progetto, in quanto, durante il nuovo tentativo di costruzione, verranno eseguite solo le attività il cui codice è effettivamente stato alterato a partire dall'ultima costruzione completata. Gradle supporta anche la costruzione del progetto per processi concorrenti, il che consente di svolgere alcuni compiti durante la costruzione (ad esempio, i test automatizzati attraverso gli unit test), eseguiti in parallelo su più core della medesima CPU, su più CPU o su più computer.

I plugin iniziali sono concentrati soprattutto sullo sviluppo e implementazione di Java, Groovy, Scala e C++, ma l'intenzione è quella di estendere il progetto anche ad altri linguaggi.

Storia

Il programma è stato ideato e realizzato inizialmente da Hans Dockter, che è il fondatore della compagnia Gradle. Il codice sorgente viene condiviso tramite il software di controllo di versione distribuito Git su GitHub.[2] Nel corso del 2013, Google ha scelto Gradle come sistema di costruzione automatizzato per il progetto Android.[3][4]

Aspetti tecnici

Il software conserva alcuni punti di forza di Apache Maven:

  • « convenzione sulla configurazione »
  • « ciclo di vita »
  • « gestione delle dipendenze » nello stile di Apache Ivy o di Apache Maven
  • « repository »

Gradle offre i seguenti vantaggi:

  • possibilità di definire il meccanismo di costruzione in linguaggio Groovy, nel file build (file che risulterà più leggero dell'equivalente XML),
  • possibilità di modificare il comportamento predefinito di alcune attività,
  • una notazione compatta per descrivere le dipendenze,
  • un motore di produzione progettato per ottenere progetti multilingue.

Lo strumento permette di costruire, senza sforzo, progetti scritti in linguaggi di programmazione diversi da Java.[5] La migrazione di un progetto da Apache Maven a Gradle è molto facile, se il progetto di partenza soddisfa le convenzioni proposte da Apache Maven.[5]

Proprio come avviene con Apache Maven, la struttura di Gradle è costituita da un nucleo astratto e da una serie di plugin che ne espandono le funzionalità. Anche la costruzione dei progetti Java avviene per mezzo di un plugin. Gradle include alcuni plugin ufficiali che consentono la costruzione di progetti Java, Groovy, Scala e C++; inoltre è supportata la costruzione degli Java Enterprise Archive (gli archivi WAR ed EAR). Altri plugin consentono di monitorare la qualità del software (ad esempio, invocano l'analisi del codice sorgente da parte del motore di FindBugs, di SonarQube, di PMD o di Checkstyle), ricorrendo all'esecuzione di controlli automatici ed alla produzione di report corrispondenti all'attività di costruzione.

Il processo di costruzione di Gradle si suddivide in due fasi principali, che vengono sempre eseguite: la configurazione e l'esecuzione. Durante il ciclo di configurazione, vengono delineati i passi dell'intera costruzione per generare il grafico di dipendenza (DAG) che contiene la sequenza di tutte le fasi da eseguire. La seconda fase consiste nell'attraversamento delle attività precedentemente rilevate. Sia la configurazione che la realizzazione della build avvengono per mezzo di istruzioni accessibili all'utente attraverso un'interfaccia di programmazione aperta e documentata.

Gradle utilizza tre file principali per personalizzare la costruzione:

  • build.gradle (necessario)
  • settings.gradle (opzionale) - Il file contiene la definizione dei moduli di cui si compone il multi-progetto.
  • gradle.properties (opzionale) - Il file contiene un elenco di valori validi per l'inizializzazione delle proprietà di uno specifico progetto Gradle.

Esistono plugin Gradle per molti ambienti di sviluppo integrati (IDE); tra questi sono compresi i più popolari: NetBeans, IntelliJ IDEA e Eclipse.

I repository Apache Maven e Apache Ivy sono supportati da Gradle.

Documentazione

La documentazione di Gradle (i tutorial, il manuale e la documentazione API), che introduce il principiante alla tecnologia Gradle, è reperibile online dal sito ufficiale del prodotto. La documentazione è tuttavia inclusa nel pacchetto di download, posizionata al percorso .\docs.

Progetto Java esemplificativo

Si consideri il caso in cui la struttura della cartella Maven viene usata per contenere il codice sorgente Java e le risorse. Queste cartelle sono: src/main/java, src/main/resources, src/test/java e src/test/resources.

build.gradle

apply plugin: 'java'

Eseguendo gradle build, il risultato sarà

> gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build

BUILD SUCCESSFUL

Il plugin Java emula come attività la maggior parte dei cicli di vita previsti da Maven all'interno del grafo aciclico diretto delle dipendenze per gli ingressi e per le uscite di ciascuna attività. In questo caso elementare, l'attività build dipende da ciò che viene restituito dalle attività check e assemble. Allo stesso modo, check dipende da test e assemble dipende da jar.

Per i progetti che non seguono le convenzioni proposte da Maven, Gradle consente di configurare la struttura della cartella. L'esempio che segue supporterebbe un progetto contenente file sorgenti in "src/java", piuttosto che in src/main/java (come da convenzione esclusiva di Maven).

build.gradle

apply plugin: 'java'
sourceSets.main.java.srcDirs = ['src/java']

Migrazione Ant esemplificativa

Gradle si integra strettamente con Ant e tratta anche i file build di Ant come script che possono essere importati direttamente durante la costruzione. L'esempio che segue mostra un semplice costrutto Ant, incorporato come fosse un'attività di Gradle,

build.xml

<project>
  <target name="ant.target">
    <echo message="Running ant.target!"/>
  </target>
</project>

build.gradle

ant.importBuild 'build.xml'

Eseguendo gradle ant.target, il risultato sarà

> gradle ant.target
:ant.target
[ant:echo] Running ant.target!

BUILD SUCCESSFUL

Attività (Task)

Un concetto chiave di Gradle è quello delle attività (task).

Attività predefinite

Gradle ha diverse attività incorporate per via predefinita; per visionarle si ricorre all'esecuzione del comando sotto indicato:

gradle -q tasks

Il risultato del comando è:

hello-world $gradle -q tasks
-----------------------------------------------------
All tasks runnable from root project
-----------------------------------------------------
Help tasks
----------
dependencies - Displays the dependencies of root project 'hello-world'.
help - Displays a help message
projects - Displays the sub-projects of root project 'hello-world'.
properties - Displays the properties of root project 'hello-world'.
tasks - Displays the tasks runnable from root project 'hello-world' 
(some of the displayed tasks may belong to subprojects).
Other tasks
-----------
helloWorld
To see all tasks and more detail, run with --all.

dove in Other tasks sono elencate le attività definite dall'utente.

Cronologia delle distribuzioni

Versione Ultimo aggiornamento Data rilascio della Major Version
0.7 0.9.2 2009-07-20
1.0 1.12 2012-06-12
2.0 2.14.1 2014-07-01
3.0 3.5.1 2016-08-15
4.0 4.10.3 2017-06-14
5.0 5.6.4 2018-11-26
6.0 6.9.4 2019-11-08
7.0 7.6.3 2021-04-09
8.0 8.4 2023-02-13

Le versioni precedenti possono essere recuperate dalla pagina di download di Gradle.

Gradle 2.3 aggiunge alcune funzionalità alla gestione delle dipendenze ed al supporto degli IDE ed apporta miglioramenti ad alcuni plugin incorporati.[6] A partire da questa versione è possibile utilizzare l'Artifact Query API per accedere ai metadati artefatti ivy.xml e pom.xml, usati da Gradle per risolvere le dipendenze.[6] Ciò consente di generare un repository offline e di ispezionare i file per metadati personalizzati.[6]

Note

  1. ^ (EN) Why Build Your Java Projects with Gradle Rather than Ant or Maven?, su drdobbs.com, Benjamin Muschko, 8 luglio 2014. URL consultato l'8 luglio 2014 (archiviato il 22 aprile 2015).
  2. ^ Repository ufficiale di Gradle ospitato da GitHub
  3. ^ (EN) Android Tools Project Site - Gradle Plugin User Guide, su sites.google.com, Google Inc., 17 maggio 2013. URL consultato il 17 maggio 2013 (archiviato il 22 aprile 2015).
  4. ^ (EN) Android Developers Documentation Site - Configure your build, su developer.android.com, Google Inc., 17 maggio 2013. URL consultato il 27 novembre 2020.
  5. ^ a b (FR) Build automatisé: à la découverte de Gradle, su connect.ed-diamond.com, Gaylord Mazelier, settembre 2011. URL consultato il settembre 2011 (archiviato il 22 aprile 2015).
  6. ^ a b c (EN) Note di rilascio di Gradle 2.3, su gradle.org, Sito Web ufficiale di Gradle, 16 febbraio 2015. URL consultato il 16 febbraio 2015 (archiviato dall'url originale il 23 aprile 2015).

Bibliografia

Voci correlate

Altri progetti

Collegamenti esterni

  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero

Read other articles:

Miss Universe IndonesiaTanggal pendirian8 Februari 2023; 12 bulan lalu (2023-02-08)TipeKontes kecantikanKantor pusatJakartaLokasiIndonesiaJumlah anggota Miss UniverseBahasa resmi Bahasa IndonesiaBahasa InggrisSitus webmissuniverse.co.id Miss Universe Indonesia atau MUID adalah kontes kecantikan tahunan di Indonesia yang diselenggarakan sejak 2023 untuk memilih pemenang yang akan mewakili Indonesia pada perhelatan kontes kecantikan Miss Universe. Sejarah Miss Universe Indonesia adalah kon...

 

 

Untuk kegunaan lain, lihat Derry (disambiguasi) dan Londonderry (disambiguasi). Derry/Londonderry Scots: Derrie[1]/Lunnonderrie[2][3]code: sco is deprecated Irlandia: Doire/Doire Cholmcillecode: ga is deprecated Maiden City Dari atas, kiri ke kanan: Austin's Department Store, Derry's Walls, Free Derry Corner, Jembatan Perdamaian melintasi Sungai Foyle, Derry pada malam hari, Diamond War Memorial, patung 'Hands Across the Divide' Vita Veritas VictoriaLife, Truth, Victor...

 

 

Об экономическом термине см. Первородный грех (экономика). ХристианствоБиблия Ветхий Завет Новый Завет Евангелие Десять заповедей Нагорная проповедь Апокрифы Бог, Троица Бог Отец Иисус Христос Святой Дух История христианства Апостолы Хронология христианства Ран�...

Stadium on the main campus of Rutgers University SHI StadiumThe Birthplace of College FootballSHI Stadium during a football game in 2006SHI StadiumLocation within Middlesex County, New JerseyShow map of Middlesex County, New JerseySHI StadiumSHI Stadium (New Jersey)Show map of New JerseySHI StadiumSHI Stadium (the United States)Show map of the United StatesFormer namesRutgers Stadium (1994–2011)High Point Solutions Stadium (2011–2017)HighPoint.com Stadium (2018–2019)Address1 Scarlet Kni...

 

 

For the former film channel in the UK and Ireland, see The Studio (TV channel). Television channel STUDIOFinal logo, used between 2012 and 2015CountryAustraliaProgrammingLanguage(s)EnglishPicture format576i (SDTV 16:9)OwnershipOwnerSpecial Broadcasting ServiceHistoryLaunchedApril 2010ReplacedOvationClosed27 March 2015 (2015-03-27)Replaced byFoxtel ArtsFormer namesSTVDIO (2010–2012)LinksWebsiteOfficial website STUDIO was a subscription television arts channel available in Aust...

 

 

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Пт�...

Laptop computers by Apple Computer This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. Please help improve this article by introducing more precise citations. (February 2024) (Learn how and when to remove this template message) PowerBook 190Product familyPowerBookRelease dateAugust 28, 1995Introductory priceUS$1,650 (equivalent to $3,299 in 2023)-US$2,200 (equivalent to $4,399 in 2023)Discont...

 

 

Пепельная средалат. Dies Cinerum Посыпание головы пеплом. (Ю. Фалат. «Пепельная среда» 1881.) Тип Христианский Значение первый день Великого поста Отмечается христианами западной традиции Дата Пепельная среда[d] В 2023 22 февраля В 2024 14 февраля Традиции посыпание голов верующи�...

 

 

Disambiguazione – Se stai cercando altri significati, vedi Maisonneuve (disambigua). Questa voce sull'argomento centri abitati della Nuova Aquitania è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. MaisonneuvecomuneLocalizzazioneStato Francia Regione Nuova Aquitania Dipartimento Vienne ArrondissementPoitiers CantoneMigné-Auxances TerritorioCoordinate46°43′17″N 0°03′24″E / 46.721389°N 0.056667°E46.721389; 0.05...

坐标:43°11′38″N 71°34′21″W / 43.1938516°N 71.5723953°W / 43.1938516; -71.5723953 此條目需要补充更多来源。 (2017年5月21日)请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。致使用者:请搜索一下条目的标题(来源搜索:新罕布什尔州 — 网页、新闻、书籍、学术、图像),以检查网络上是否存在该主题的更多可靠来源...

 

 

哈比卜·布尔吉巴الحبيب بورقيبة‎第1任突尼斯总统任期1957年7月25日—1987年11月7日(30年105天)总理巴希·拉德加姆(英语:Bahi Ladgham)(1969年-1970年)赫迪·努伊拉(英语:Hedi Nouira)(1970年-1980年)穆罕默德·姆扎利(英语:Mohammed Mzali)(1980年-1986年)拉希德·斯法尔(英语:Rachid Sfar)(1986年-1987年)宰因·阿比丁·本·阿里(1987年)继任宰因·阿比丁·本·...

 

 

Randy ReeseReese poolside in 1976Biographical detailsBorn1946Daytona Beach, FloridaPlaying career1965–1967Florida State University Position(s)Individual medleyCoaching career (HC unless noted)1968–1970Bolles School1971–1976Episcopal High School1976–1990University of Florida1979Pan-Am Games (Asst.)1980–1988U.S. Olympic Team (Asst.)1987Pan-Pacific Championships (Asst.) Head coaching recordOverallMen's: 100–21 (.826)Women's: 118–7 (.944)Accomplishments and honorsChampionshipsMen's...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (سبتمبر 2018) روبرتو سيزار معلومات شخصية الميلاد 14 فبراير 1955 (العمر 69 سنة)البرازيل  مركز اللعب مهاجم الجنسية البرازيل  المسيرة الاحترافية1 سنوات فريق م. (هـ.) 1974–1976 ك�...

 

 

2002 University of Kentucky football season 2002 Kentucky Wildcats footballConferenceSoutheastern ConferenceDivisionEastern DivisionRecord7–5 (3–5 SEC)Head coachGuy Morriss (2nd season)Offensive coordinatorBrent Pease (2nd season)Offensive schemePro setDefensive coordinatorJohn Goodner (2nd season)Base defense4–2–5/4–4–3Home stadiumCommonwealth StadiumSeasons← 20012003 → 2002 Southeastern Conference football standings vte...

 

 

Rugby union played in snow Snow rugby players in Afghanistan Snow rugby refers to forms of rugby union that are especially adapted to be played in winter conditions, particularly in deep snow. It is played in Canada,[1] the Kashmir region in India,[2][3] the Baltic states,[4] Russia, the northern United States, and Finland. Specific locations of play include the Argentinian Ski Resort of Las Leñas[5][6] and the Boitsfort Rugby Club in Brussels....

Since Kansas became a U.S. state in 1861, it has sent congressional delegations to the United States Senate and United States House of Representatives. Each state elects two senators to serve for six years, and members of the House to two-year terms. Before becoming a state, the Kansas Territory elected a non-voting delegate at-large to Congress from 1854 to 1861. These are tables of congressional delegations from Kansas to the United States Senate and the United States House of Representati...

 

 

Letak Columbus di Ohio Columbus merupakan sebuah kota di Amerika Serikat. Kota ini letaknya di bagian tengah. Tepatnya di negara bagian Ohio. Pada tahun 2005, kota ini memiliki jumlah penduduk sebesar 754.885 jiwa dan memiliki luas wilayah 550,5 km². Kota ini memiliki angka kepadatan penduduk sebesar 1.373 jiwa/km². Pranala luar Wikivoyage memiliki panduan wisata Columbus. Situs resmi Diarsipkan 2006-05-10 di Wayback Machine. Experience Columbus Columbus Convention and Visitor Bureau C...

 

 

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: 大大阪時代 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2019年10月) 大大阪時代の風景(大阪歴史博物館) 第6代大�...

2014 role-playing video games This article is about the Nintendo 3DS games. For the second season of the Yo-kai Watch anime series, see List of Yo-kai Watch episodes. 2014 video gameYo-kai Watch 2: Bony SpiritsYo-kai Watch 2: Fleshy SoulsYo-kai Watch 2: Psychic SpectersNorth American packaging artwork for Bony SpiritsDeveloper(s)Level-5Publisher(s)JP: Level-5WW: NintendoDirector(s)Ken MotomuraProducer(s)Akihiro HinoDesigner(s)Tatsuya ShinkaiProgrammer(s)Yuji MoriTetsuo MoriArtist(s)Takuzo Nag...

 

 

بيتلجوسBeetlejuice (بالإنجليزية) بوستر الفيلممعلومات عامةالصنف الفني كوميدي رعب — فيلم فنتازيا[1][2][3] — فيلم أشباح الموضوع بيت مسكون تاريخ الصدور 30 مارس 1988مدة العرض 92 دقيقةاللغة الأصلية الإنجليزيةالبلد  الولايات المتحدةالجوائز  جائزة الأوسكار لأفضل مكياج وت...