Gradle

Werbung
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/
Herunterladen