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.Gradle: Alle Dateien in einer Abhängigkeit vom Maven-Repository abrufen
Meine Abhängigkeit enthält 15 Dateien in meinem Nexus-Repository unter dem gleichen GAV gespeichert:
myproject.jar
myproject.jar.md5
myproject.jar.sha1
myproject-sources.jar
myproject-sources.jar.md5
myproject-sources.jar.sha1
myproject.tgz
myproject.tgz.md5
myproject.tgz.sha1
myproject.pom
myproject.pom.md5
myproject.pom.sha1
maven-metadata.xml
maven-metadata.xml.md5
maven-metadata.xml.sha1
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, in der Lage sein, nur die GAV-Parameter zu meinem Skript zu übergeben und es kann für alle GAV, egal welche Dateien stehen zur Verfügung.
Die Lösung, die ich jetzt gerade arbeite ist direkt mit dem Nexus Repo abzufragen, um die Dateiliste mit einer URL wie folgt zu erhalten:
http://mynexushost:8081/nexus/service/local/repositories/snapshots/content/${group}/${artifact}/${version}/
Das ist mir eine JSON (mit dem Accept-Header sendet (auf application/json
gesetzt), die die URLs und Zeug enthält, die ich benötige, um alle verfügbaren Dateien wiederherzustellen, lade sie herunter und füge sie meinen Artefakten hinzu und lade sie dann in mein Ziel-Repository hoch.
Ich bin ziemlich sicher, dass diese Lösung funktioniert, aber es ist definitiv nicht der "Gradle Weg", es zu tun, da es mich an Nexus bindet und nicht die eingebauten Maven-Abhängigkeitsauflösungsdienstprogramme verwendet.
Wie kann ich das lösen, ohne die Nexus API abzufragen?
Kannst du eine Gradle-Abhängigkeit deklarieren? Warum brauchen Sie alle spezifischen Dateien? – approxiblue
Ich möchte den gleichen genauen GAV in einem anderen Nexus Repo reproduzieren. Vielleicht muss ich nicht alle Dateien einzeln angeben, aber mit dem Defaut-Gradle-Weg, um Abhängigkeiten zu behandeln, bekomme ich nur die 'myproject.jar'-Datei. Und ich möchte die Erweiterungen in meinem Bereitstellungsskript nicht fest codieren, ich möchte es allgemein halten. – Johnride
Bedeutet das, dass Sie [einige Artefakte in einem anderen Repository bereitstellen] (https://docs.gradle.org/current/userguide/maven_plugin.html#sec:deploying_to_a_maven_repository)? – approxiblue