Ich möchte alle verfügbaren Dateien in einer Abhängigkeit zu meinen Artefakten hinzufügen, damit ich diese Abhängigkeit in ein anderes Nexus-Repository hochladen kann.
Meine Abhängigkeit enthält 15 Dateien, die in meinem Nexus-Repository unter demselben GAV gespeichert sind:
%Vor% Die -sources.jar
Datei hat eine <classifier>sources</classifier>
Eigenschaft, die tgz und pom Dateien haben eine <extension>
Eigenschaft und die anderen haben nichts besonderes.
Die Sache ist, ich möchte so viel wie möglich hardcoding vermeiden, um nur die GAV-Parameter an mein Skript übergeben zu können, und es kann das ganze Holen und Freigeben für jeden GAV selbständig erledigen, egal welche Dateien es sind verfügbar.
Die Lösung, an der ich gerade arbeite, ist die direkte Abfrage des Nexus-Repos, um die Dateiliste mit einer URL wie dieser zu erhalten:
http://mynexushost:8081/nexus/service/local/repositories/snapshots/content/${group}/${artifact}/${version}/
Das sendet mir einen JSON (mit dem accept-Header auf application/json
) mit den URLs und Sachen, die ich brauche, um alle verfügbaren Dateien zu retreive, lade sie herunter und füge sie meinen Artefakten hinzu und lade sie dann in mein Ziel-Repository hoch.
Ich bin mir ziemlich sicher, dass diese Lösung funktioniert, aber es ist definitiv nicht der "Gradle-Weg", es zu tun, da es mich mit Nexus verbindet und die eingebauten Maven-Abhängigkeitsauflösungs-Dienstprogramme nicht verwendet.
Wie kann ich das lösen, ohne die Nexus-API abzufragen?
Ich habe ein Tool namens Maven Repository Provisioner erstellt, das genau das erreicht. Sie können es unter Ссылка
ausprobierenEs wird in der Produktion für genau den Zweck verwendet, den Sie wollen, aber es berechnet auch alle transitiven Abhängigkeiten und benötigt Elternteile. Schau es dir an und wenn es nicht alles macht was du willst ... nehme ich Pull Requests ;-)