Gradle (pronunciat més o menys greidol) és una eina per automatitzar tasques de construcció d'aplicacions. Entre d'altres es poden automatitzar i customitzar els procesos de compilació, construcció, testeig, "deployment" i publicació d'aplicacions
També s'utilitza Gradle en alguns casos per automatizar tasques com la creació de pàgines web, documentació...
Gradle combina el poder i la flexibilitat de Ant amb la capacitat de gestionar dependències de Maven. Utilitza Groovy Domain Specific Language (DSL). A diferència d'Ant Groovy no utilitza XML sinó que utilitza un sistema declaratiu per descriure els processos de construcció d'aplicacions. De fet Groovy a diferència de XML és un llenguatge de programació tot i que no és un llenguatge de programació declaratiu no procedimental.
.NOTA: Gradle és conegut per ser l'eina que utilitza Android Studio per construir aplicacions Android. Android Studio apareix com una IDE alternativa a Eclipse ADT un plugin d'Eclipse per a crear aplicacions Android i que utilitza Ant com a eina d'automatització de tasques de construcció. Desde finals de 2014 Google ja no dona suport a Eclipse
Gradle s'executa en una màquina virtual Java.
Recursos:
Es pot fer manual des de la web:
$ wget https://services.gradle.org/distributions/gradle-2.2.1-all.zip
Com podeu veure és un simple zip que podeu decomprimir amb unzip
$ unzip gradle-2.2.1-all.zip
En sistemes de la família Debian+ podeu utilitzar:
$ sudo apt-get install gradle
els fitxers instal·lats són:
TODO
Cal tenir en compte que si instal·leu a mà caldrà també configurar el PATH per poder executar gradle des de qualsevol carpeta del sistema.
També cal tenir en compte les següents variables d'entorn:
Podeu comprovar si el teniu instal·lat amb:
$ gradle --version
NOTA: eines com Android Studio porten Gradle integrat i no cal instal·lar Gradle apart
Creeu una carpeta i un simple hola mon Java:
$ cd && mkdir gradlehelloworld && cd gradlehelloworld $ git clone https://github.com/chochos/HolaSG $ cd HolaSG/
Observeu que simple és el fitxer build.gradle:
$ cat build.gradle apply plugin:'java' version=0.1 description='Ejemplo de uso de Gradle para Revista Software Guru' defaultTasks 'build', 'assemble' repositories { mavenCentral() } dependencies { testCompile 'junit:junit:4.8.2' } task javadocJar(type:Jar, dependsOn:'javadoc') { from javadoc.destinationDir classifier='javadoc' } task sourcesJar(type:Jar) { from sourceSets.main.allSource classifier='sources' }
NOTA: Al exemple s'incorpora la llibreria de tests unitarias junit utilitzant el repositori Maven i es defineix com crear el javadocs
Ara només cal executar:
$ /home/sergi/gradle-2.2.1/bin/gradle build
Les classes s'han creat a la carpeta build:
$ ls build/classes/main/ejemplo/HolaJava.class
De fet només amb la primera línia del fitxer build.gradle ja funcionaria (simplement compilaria i tota la resta d'opcions les per defecte).
Recursos:
$ cd
Creeu un fitxer build.gradle:
$ joe build.gradle apply plugin: 'java' version = '1.0-SNAPSHOT' sourceCompatibility = 1.7 repositories { mavenCentral() } dependencies { compile group: 'commons-collections', name: 'commons-collections', version: '3.2' testCompile group: 'junit', name: 'junit', version: '4.+' testCompile group: 'org.hamcrest', name: 'hamcrest-library', version: '1.3' testCompile group: 'org.mockito', name: 'mockito-core', version: '1.9.5' } jar { manifest { attributes 'Implementation-Title': 'Gradle adictosaltrabajo.com tutorial', 'Implementation-Version': version } }
IMPORTANT: tot projecte gradle té un fitxer build.gradle de forma similar a tots els projectes Ant que tenen un fitxer build.xml
com podeu veure la secció més important és la dependències. S'utilitza Maven central per obtenir/gestionar les dependències
Ara construïm el projecte:
$ gradle-2.2.1/bin/gradle build :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :jar UP-TO-DATE :assemble UP-TO-DATE :compileTestJava UP-TO-DATE :processTestResources UP-TO-DATE :testClasses UP-TO-DATE :test UP-TO-DATE :check UP-TO-DATE :build UP-TO-DATE BUILD SUCCESSFUL
Total time: 3.176 secs
Recursos:
Abans de endinsar-nos en les especificitats de Gradle com a eina per ajudar a la construcció d'aplicacions Android, cal que conegueu el procés de construcció d'una aplicació Android. Llegiu:
Desenvolupament_Android#Building_.26_Running
Una forma aprendre com funciona gradle amb Android es veure com l'utilitza Android Studio. si creeu un projecte per defecte d' Android Studio (per exemple una activitat en blanc) es crearan diversos fitxers gradle. Vegem primer el graddle per al module app:
apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.example.sergi.myapplication" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' }
La línia més important és la primera que carrega el plugin per construir aplicacions Android ([1]):
apply plugin: 'com.android.application'
per configurar aquest plugin iniciem una secció
android { ... }
aquí es posen dades com el nom i codi de versió, els SDK mínim i target d'Android, etc. Totes aquestes dades s'escullen al wizard de creació de projecte i moltes també apareixen al manifest del projecte Android. Sovint aquesta secció no s'haurà de canviar de forma manual sinó que Android Studio us la modificarà ell mateix si feu canvis en aquesta informació del projecte.
Vegem la secció dependències una secció molt important que ens permet gestionar les llibreries o projectes dels que depèn el nostre projecte:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' }
Com podeu veure s'afegeixen com a dependències tots els .jar de la carpeta lib i també Android Studio ens afegeix per defecte la llibreria de compatibilitat Android (a l'exemple la v7).
Recursos:
https://github.com/gradle/gradle
http://gradleplease.appspot.com/
La informació s'extreu de Maven Central. Podeu utilitzaar Sonatype per incluir la vostra llibreria a Maven Central