Gradle - Panoramica

"Gradle is an open source build automation system"

Ant e Maven hanno condiviso un notevole successo nel mercato JAVA. Ant è stato il primo strumento di build rilasciato nel 2000 ed è sviluppato sulla base di un'idea di programmazione procedurale. Successivamente è stato migliorato con la capacità di accettare plug-in e gestione delle dipendenze sulla rete con l'aiuto di Apache-IVY. Lo svantaggio principale è XML come formato per scrivere script di compilazione, essere gerarchico non è buono per la programmazione procedurale e XML tende a diventare ingestibilmente grande.

Maven è stato introdotto nel 2004. Viene fornito con molti miglioramenti rispetto a ANT. Cambia la sua struttura e continua a utilizzare XML per scrivere le specifiche di build. Maven si affida alle convenzioni e riesce a scaricare le dipendenze in rete. I principali vantaggi di Maven è il suo ciclo di vita. Pur seguendo lo stesso ciclo di vita per più progetti continuamente. Questo comporta un costo di flessibilità. Maven deve anche affrontare alcuni problemi nella gestione delle dipendenze. Non gestisce bene i conflitti tra le versioni della stessa libreria e gli script di compilazione personalizzati complessi sono in realtà più difficili da scrivere in Maven che in ANT.

Finalmente Gradle è entrato in scena nel 2012. Gradle porta alcune funzionalità efficienti da entrambi gli strumenti.

Caratteristiche di Gradle

Di seguito è riportato l'elenco delle funzionalità fornite da Gradle.

  • Declarative builds and build-by-convention- Gradle è disponibile con DSL (Domain Specific Language) separato basato sul linguaggio Groovy. Gradle fornisce elementi del linguaggio dichiarativo. Questi elementi forniscono anche il supporto build-by-convention per Java, Groovy, OSGI, Web e Scala.

  • Language for dependency based programming - Il linguaggio dichiarativo si trova in cima a un task graph generico, che puoi sfruttare appieno nella tua build.

  • Structure your build- Gradle ti consente finalmente di applicare principi di progettazione comuni alla tua build. Ti darà una struttura perfetta per la build, in modo che tu possa progettare build ben strutturate, di facile manutenzione e comprensibili.

  • Deep API - L'utilizzo di questa API consente di monitorare e personalizzare la sua configurazione e il comportamento di esecuzione al suo nucleo.

  • Gradle scales - Gradle può facilmente aumentare la loro produttività, da build semplici e singole a grandi build multi-progetto aziendali.

  • Multi-project builds- Gradle supporta build multi-progetto e supporta build parziali. Se costruisci un sottoprogetto Gradle si occupa di costruire tutti i sottoprogetti da cui dipende.

  • Different ways to manage your builds - Gradle supporta diverse strategie per gestire le tue dipendenze.

  • Gradle is the first build integration tool- Gradle completamente supportato per le tue attività ANT, infrastruttura di repository Maven e lvy per la pubblicazione e il recupero delle dipendenze. Gradle fornisce anche un convertitore per trasformare un Maven pom.xml in uno script Gradle.

  • Ease of migration- Gradle può adattarsi facilmente a qualsiasi struttura tu abbia. Pertanto puoi sempre sviluppare la tua build Gradle nello stesso ramo in cui puoi creare live script.

  • Gradle Wrapper- Gradle Wrapper consente di eseguire build Gradle su macchine in cui Gradle non è installato. Ciò è utile per l'integrazione continua dei server.

  • Free open source - Gradle è un progetto open source e concesso in licenza con Apache Software License (ASL).

  • Groovy- Lo script di build di Gradle è scritto in Groovy. L'intero design di Gradle è orientato ad essere utilizzato come linguaggio, non come struttura rigida. E Groovy ti permette di scrivere il tuo script con alcune astrazioni. L'intera API Gradle è completamente progettata in linguaggio Groovy.

Perché Groovy?

L'API Gradle completa è progettata utilizzando il linguaggio Groovy. Questo è un vantaggio di un DSL interno rispetto a XML. Gradle è uno strumento di costruzione generico al suo interno; il suo obiettivo principale sono i progetti Java. In tali progetti, i membri del team avranno molta familiarità con Java ed è meglio che una build sia il più trasparente possibile per tutti i membri del team.

Linguaggi come Python, Groovy o Ruby sono migliori per il framework di compilazione. Il motivo per cui è stato scelto Groovy è perché offre di gran lunga la massima trasparenza per le persone che utilizzano Java. La sintassi di base di Groovy è la stessa di Java. Groovy offre molto di più in più.