Dienstag, 6. Januar 2015

Gradle Dependencies und Snapshots

Wer als Softwareentwickler den Snapshot Mechanismus von Maven kennt, wird ihn gerne verwenden. Er bietet eine leichte und einfache Weise Software zu testen über die Grenzen eines einzelnen Projektes hinaus. Leider gibt es diesen Mechanismus in Gradle nicht. Die ist ein wirklicher Nachteil von Gradle im Vergleich zu Maven und es ist nicht der einzige Nachteil. Aber das ist hier nicht das Thema.

In Gradle kann relativ einfach lokale Jar-Dateien, z.B. aus einem anderen Projekt als Dependency einbinden:

 dependencies {
          classpath files('../wpt-gradle-plugin/target/lpt-gradle-plugin-0.0.19-SNAPSHOT.jar')

 }

So lassen sich sehr einfach Software-Artefakte aus anderen Projekten einbinden ohne sie permanent auf einen Nexus hochzuladen. Damit entfällt auch das sehr lästige manuelle hochzuholen der Versionenummern in den beiden beteiligten Projekten. Der Nachteil dieser Lösung ist, dass wenn die Har-Datei selber Abhängigkeiten hat, dann werden diese nicht aufgelöst, weil Gradle die dafür notwendigen Informationen fehlen.

repositories {
          mavenLocal()

 }

 dependencies {
          classpath "de.otto:lpt-gradle-plugin:0.0.19-SNAPSHOT"

 }

Ein einfache Lösung die die Vorteile beider Lösungen kombiniert ist die Benutzung des lokalen Maven Stores zum laden der Entwickler-Jar-Datei und dem laden der Dependencies. Um die Har-Datei in den lokalen Maven stören zu bringen muss mann das Maven Target install ausführen:
...
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ lpt-gradle-plugin ---
[INFO] Building jar: /Users/mirkoebert/Documents/workspace/wpt-gradle-plugin/target/lpt-gradle-plugin-0.0.19-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ lpt-gradle-plugin ---
[INFO] Installing /Users/mirkoebert/Documents/workspace/wpt-gradle-plugin/target/lpt-gradle-plugin-0.0.19-SNAPSHOT.jar to /Users/mirkoebert/.m2/repository/de/otto/lpt-gradle-plugin/0.0.19-SNAPSHOT/lpt-gradle-plugin-0.0.19-SNAPSHOT.jar
[INFO] Installing /Users/mirkoebert/Documents/workspace/wpt-gradle-plugin/pom.xml to /Users/mirkoebert/.m2/repository/de/otto/lpt-gradle-plugin/0.0.19-SNAPSHOT/lpt-gradle-plugin-0.0.19-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.195 s
[INFO] Finished at: 2015-01-06T22:48:13+01:00
[INFO] Final Memory: 17M/171M

[INFO] ------------------------------------------------------------------------

Keine Kommentare:

Kommentar veröffentlichen