Wie kann ich in Gradle eine POM-Datei generieren, deren dynamische Abhängigkeiten in die tatsächlich verwendete Version aufgelöst werden?

8

Wie kann ich in Gradle eine POM-Datei mit dynamischen Abhängigkeiten erzeugen, die in die tatsächlich verwendete Version aufgelöst wurden?

%Vor%

Dies wird aus der obigen Abhängigkeit generiert.

%Vor%

Ich möchte die + in eine Accrual-Version wie unten aufgelöst haben.

%Vor%

Das Kapitel über die Rangliste auf Maven Publishing spricht darüber, dies zu tun, erwähnt aber nicht wie .

  

Mit diesem Haken können Sie jeden Aspekt des POM ändern. Beispielsweise könnten Sie den Versionsbereich für eine Abhängigkeit durch die tatsächliche Version ersetzen, die zum Erstellen des Builds verwendet wurde.

Lösung

Unter Verwendung der Informationen in Peter Niederwiesers Antwort habe ich eine Aufgabe erstellt, die ein POM liest, das dynamische Abhängigkeiten enthält, und es mit einem neuen Pom überschreibt, bei dem die Abhängigkeiten aufgelöst sind.

%Vor%     
Mike Rylander 06.01.2014, 21:25
quelle

3 Antworten

5

Es wird einige Anstrengungen erfordern, um dies zu programmieren. Die zwei Hauptteile sind:

  • Abfragen von aufgelösten Versionen mithilfe der API Configuration#getIncoming oder Configuration#getResolvedConfiguration
  • Manipulieren des POM mit Groovys XMlParser API (vorausgesetzt, das neue maven-publish Plugin wird verwendet)

Informationen zur Configuration API finden Sie in Gradle Build Language Reference , die weiter in das Javadoc einbindet. Die vollständige Gradle-Verteilung enthält ein kleines Beispiel zeigt die POM-Manipulation. Informationen über XmlParser finden Sie in den Groovy-Dokumenten.

    
Peter Niederwieser 06.01.2014, 22:52
quelle
2

Ich habe versucht, dies in ein Plugin zu integrieren, das angewendet werden kann. Der spezifische Code ist hier verfügbar: Ссылка

Und es kann via jcenter () über 'com.netflix.nebula: nebula-publishing-plugin: 1.9.1' eingebunden werden.

    
Justin Ryan 20.01.2014 18:24
quelle
2

Die Lösung mit dem von Peter vorgeschlagenen pom.withXml() sieht folgendermaßen aus:

%Vor%     
guenhter 02.09.2015 12:51
quelle