Lange Zeit war ich mit Maven und Ant in meinem Werkzeugkoffer zufrieden.
Maven habe ich immer dann genutzt, wenn das Projekt sich an die Standardkonventionen gehalten hat und nur wenige zusätzliche Plugins benötigt wurden. Ant war mein Werkzeug, wenn ich mehr Freiheitsgrade brauchte.
Gradle ermöglicht mir beides und ich frage mich, wie ich es so lange mit den anderen Werkzeugen ausgehalten habe.
Ich werde in loser Folge ein paar Posts über die Möglichkeiten von Gradle im Zusammenspiel mit Git schreiben.
Los geht es heute mit dem Eintragen des Commit-Hash in die Manifest-Datei.
Das Git-Plugin wird in der Datei build.gradle
folgendermassen hinzugefügt:
buildscript { repositories { mavenCentral() } dependencies { classpath 'org.ajoberstar:gradle-git:0.8.0' } } import org.ajoberstar.grgit.*
Das Plugin basiert auf JGit und ist somit plattformunabhägig. Es erfordert keine Installation von nativen Programmen auf dem Build-Rechner.
Das Plugin bringt keine Tasks mit, sondern eine Groovy-API die man in eigenen Tasks benutzen kann.
Um den Hash-Wert des aktuellen Commit zu ermitteln und auszugeben, reicht folgender Code:
task printHeadHash << { def grgit=Grgit.open(project.file('.')) println grgit.head().id }
Um zu ermitteln, ob es unversionierte Änderungen gibt, geht man folgendermaßen vor:
task printIsClean << { def grgit=Grgit.open(project.file('.')) if(grgit.status().isClean()) { println "Alles versioniert" } else { println "Unversionierte Änderungen" } }
Als letztes bringt man alle Teile zusammen und schreibt den Commit-Hash in die Manifest-Datei, allerdings nur dann wenn es keine unversionierten Änderungen gibt.
apply plugin: 'java' buildscript { repositories { mavenCentral() } dependencies { classpath 'org.ajoberstar:gradle-git:0.8.0' } } import org.ajoberstar.grgit.* jar { manifest { def grgit=Grgit.open(project.file('.')) if(grgit.status().isClean()) { attributes("Commit-Id": grgit.head().id) } else { attributes("Commit-Id": 'unknown') } } }