Herunterladen von Abhängigkeiten vom privaten Amazon S3-Repository mit Gradle

8

Ich möchte einem bestehenden Java-Projekt Groovy-Unterstützung hinzufügen, damit ich gemischten Java- und Groovy-Code mit Hilfe von invokedynamic problemlos kompilieren kann, um Java-ähnliche Ausführungsgeschwindigkeit, ohne übermäßige Menge an Zeit mit ausführlicher Java-Syntax verschwenden zu müssen

Nachdem ich gelesen habe, dass das gmaven Plugin die Kompilierung nicht mehr unterstützt - und dass das Groovy Eclipse Compiler Plugin unterstützt noch nicht aufgerufenedynamic , ich fragte mich, warum sollte ich Maven weiter verwenden, wenn es Groovy-Code kompiliert, der unnötig langsam ist?

Folglich entschied ich, dass ich versuchen würde, Maven für Gradle zu verschrotten, damit ich schnelleren Code erhalten konnte, während ich auch einige Python-Deployment-Skripte auf Gradle-Tasks portieren konnte, um nur eine Codebasis zu benötigen.

Ich habe einige Bibliotheken in einem einfachen passwortgeschützten S3-Maven-Repository gespeichert (um Enterprise-Overkills wie Artefakte zu vermeiden). Nach einiger Grundlagenforschung habe ich festgestellt, dass Gradle keine Unterstützung für das Hinzufügen eines benutzerdefinierten Abhängigkeitsmanagements bietet, wie von diese Stack-Overloundefrage und diesen Supportforumsbeitrag .

Ich habe es geschafft, ein s3-Plugin für grddle zu finden - aber es geht nicht um das Management von Abhängigkeiten.

Wenn der ganze Punkt von Gradle flexibler sein soll als Maven und wenn der Hauptzweck eines Abhängigkeitsverwaltungs / Build-Systems darin besteht, Abhängigkeiten von einer Vielzahl von Quellen effektiv zu verwalten, dann scheint die fehlende Unterstützung für benutzerdefinierte Repositories ein Ein ziemlich signifikanter Designfehler, der alle Probleme, die ich mit Maven gemacht habe, im Vergleich dazu verblasst.

Es ist jedoch durchaus möglich, dass mir etwas fehlt, und ich habe bereits mehrere Stunden investiert, um Gradle zu lernen - also dachte ich, ich würde sehen, ob es ein vernünftiges Mittel gibt, das Abhängigkeitsmanagement für diese Abhängigkeiten zu emulieren, bis Gradle-Entwickler das beheben kritisches Problem. Ansonsten muss ich schlussfolgern, dass es besser ist, einfach Maven zu verwenden und langsameren Groovy-Code zu tolerieren, bis das Compiler-Plugin aufgerufenedynamic unterstützt.

Im Grunde brauche ich eine Lösung, die Folgendes tut:

  1. Downloads Abhängigkeiten und transitive Abhängigkeiten zum Gradle-Cache
  2. Ich muss den Pfad zum Gradle-Cache nicht fest codieren, da mein Build-Skript plattformunabhängig ist.
  3. Die Abhängigkeiten werden nicht erneut heruntergeladen, wenn sie sich bereits im Cache befinden.
  4. Funktioniert mit einem Projekt mit mehreren Modulen.

Ich kann jedoch nichts in der Dokumentation finden, das mir einen Hinweis darauf geben könnte, wo ich anfangen soll:

    
THX1138 03.05.2014, 17:52
quelle

3 Antworten

2

Gradle 2.4 bietet native Unterstützung für S3-Repositories . Sowohl das Herunterladen von Abhängigkeiten als auch das Veröffentlichen von Artefakten.

Zum Herunterladen mit IAM-Anmeldeinformationen (umschrieben vom obigen Link):

%Vor%

Geben Sie dann Ihre Abhängigkeiten wie üblich an.

    
ThorinII 29.06.2015 23:22
quelle
0

Sie benötigen keine benutzerdefinierte Repository-Unterstützung, damit dies funktioniert. Deklarieren Sie einfach ein maven -Repository mit der richtigen URL. Wenn das Repository funktioniert, wenn es von Maven verwendet wird, funktioniert es auch mit Gradle. (Das Hochladen kann eine andere Sache sein.)

    
Peter Niederwieser 03.05.2014 18:41
quelle
0

Sie können S3 und http

verwenden %Vor%

Benennen Sie das Glas in S3, um name-rev.jar (joda-time-3.2.jar) in meinem Eimer zu benennen. Laden Sie auch eine Pom-Datei hoch. Und in S3 geben Sie alle Erlaubnis, das Glas und Pom herunterzuladen.

    
Anders B 26.08.2016 12:57
quelle