Build Tool? Funktionen - kompiliert den Sourcecode in Binaries - erstellt Software Package - führt automatisierte Tests aus - installiert die Software bzw. lädt sie in Repositories - erstellt eine Dokumentation Vertreter - Make - Ant - Maven - Gradle / Buildr Hello World build.gradle task hello << { println 'Hello world!' } Ausgabe > gradle -q hello Hello world! Gradle basiert auf Groovy build.gradle task compute1 << { int i = 5 + 9 Ausgabe > gradle -q compute1 5 + 9 = 14 String s = '5 + 9 = '+i println s } Ergebnis: 45 task compute2 << { int j = 0 for(int i=1;i<10;i++){ j+=i } println 'Ergebnis: ' + j } > gradle -q compute2 Code hinzufügen build.gradle task task1 build.gradle task task2 << { println 'zwei' } task1 << { print 'Task' task2.doLast { println 'drei'} } task1 << { task2.doFirst { println 'eins'} print ' 1' } Ausgabe gradle -q task2 Ausgabe eins > gradle -q task1 zwei Task 1 drei Abhängigkeiten build.gradle task initDB << {println 'init DB'} Ausgabe > gradle -q t1 init DB task initLog << {println 'init Log'} t1 task t1 (dependsOn: initDB) << { > gradle -q t2 println 't1' } init DB init Log t2 task t2 (dependsOn: [initDB, initLog]) << { println 't2' } Task Konfiguration build.gradle task initWebservice initWebservice << { println 'starte Netzwerk' } initWebservice << { println 'starte Webservice' } initWebservice { println 'konfiguriere Netzwerk' } Ausgabe > gradle -b build.gradle konfiguriere Netzwerk :initWebservice starte Netzwerk starte Webservice initWebservice Java Dateikonventionen - src/main/java, src/test/java für Source Files - src/main/resources, src/test/resources für Bilder, Testfiles ... Verfügbare Tasks Java Was muss ich tun? build.gradle Konsole apply plugin: 'java' gradle build Was bekomme ich? - Das Projekt wird kompiliert - Die Test werden ausgeführt - Ein Jar wird erzeugt und in build/libs gespeichert Javadoc Konsole gradle javadoc Clean Konsole gradle clean Welche Taks gibt es? Konsole gradle tasks Bibliotheken einbinden build.gradle repositories{ mavenCentral() mavenLocal() maven { url “http://repo.xyz.de/maven2“ } } dependencies{ testCompile group: 'junit', name: 'junit', version: '4.+' compile files('/usr/share/xyz.jar'), fileTree(dir:'lib', include: '*.jar'), "joda-time:joda-time:2.2" } Weitere Anpassungen build.gradle sourceCompatiblity = 1.7 jar { baseName = 'fancy-App' Version = '0.2.1' manifest { attributes 'Main-Class': 'de.fsu.bioinf.App' } } - erzeugt das Jar mit dem Namen fancy-App-0.2.1.jar - erzeugt ausführbares Jar - schränkt die Kompatibilität auf Version 1.7 ein Eine Anwendung starten build.gradle Konsole apply plugin: 'application' > gradle run mainClassName = „de.fsu.example.Test“ :compileJava UP-TO-DATE applicationDefaultJvmArgs = [„-Xmx4G“] /src/main/java/de/fsu/Example.java :processResources UP-TO-DATE :classes UP-TO-DATE :run Programm gestartet package de.fsu.example; public class Test { BUILD SUCCESSFUL public static void main(String[] args){ System.out.println("Programm gestartet");} } Total time: 4.55 secs Projekt ins lokale Repository packen build.gradle apply plugin: 'maven' group = 'de.unijena.bioinf' Version = '0.2.1-SNAPSHOT' Konsole > gradle install - Name entspricht Verzeichnisname des Projekts - für anderen Namen: settings.gradle rootProject.name = 'newName' Installation (siehe http://www.gradle.org/installation ) - Gradle 2.8 herunterladen und ins home entpacken - Anpassungen an ~/.bashrc: .bashrc … export GRADLE_HOME="/home/xyz/gradle-2.8/" … export PATH="${PATH}:${GRADLE_HOME}/bin" … - Test der Installation mit gradle -v Literatur Gradle User Guide http://www.gradle.org/docs/current/userguide/userguide.html Building and Testing with Gradle http://it-ebooks.info/book/575/ Spring – Building Java Projects with Gradle https://spring.io/guides/gs/gradle/