IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Gradle logo

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.

Una mica d'història i evolució eines de construcció

Recursos:

Instal·lació

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:

  • GRADLE_HOME: Per indicarel path on heu instal·lat Grad. Per exemple: $ export GRADLE_HOME=/opt/gradle
  • GRADLE_OPTS: no és obligatòria. Permet passar paràmetres a la JVM que executa Gradle. Per exemple $export GRADLE_OPTS="-Xmx768m -XX:MaxPermSize=128m"

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

Hola mon

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:


Exemple de bàsic de compilació de projecte Java

$ 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:

Android gradle

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:

Gradle Android tutorials

Gradle vs Ant

Codi font. Github

https://github.com/gradle/gradle

Eines

Gradle please

http://gradleplease.appspot.com/

La informació s'extreu de Maven Central. Podeu utilitzaar Sonatype per incluir la vostra llibreria a Maven Central

Vegeu també

Enllaços externs