2009-07-04 8 views
5

Es gibt ein cruisecontrol-Plugin, das nach Änderungen an Snapshot-Abhängigkeiten sucht und bei Bedarf einen Build auslöst. Dazu wird der Maven-Embedder verwendet, um die Abhängigkeiten herunterzuladen und dann die Zeitstempel der Snapshot-Dateien im lokalen Repository zu überprüfen. Dies funktioniert in Ordnung, beinhaltet aber das Herunterladen aller Eltern und Abhängigkeiten, um einige Zeitstempel zu überprüfen.Überprüfung auf maven Snapshot-Abhängigkeitsänderungen auf dem Server für kontinuierliche Integration

Ich arbeite an einem verteilten CI-System (z. B. Bamboo/Buildforge) und möchte vermeiden, die gesamte Abhängigkeitshierarchie herunterladen, um zu überprüfen, ob ein Build erforderlich ist. Sie können das Erstellungsdatum einer Snapshot-Abhängigkeit ermitteln, indem Sie die Datei maven-metadata.xml im Remote-Repository überprüfen.

Gibt es Plugins oder Tools, um diesen Prozess zu optimieren?

+0

Sie meinen, Sie bauen ein verteiltes CI-System? –

+0

Nein, ich verwende Buildforge als CI-System, jeder Build kann auf einem beliebigen Agenten ausgeführt werden, und ich möchte vermeiden, dass die gesamte Maven-Abhängigkeitshierarchie aufgelöst wird, um festzustellen, ob Snapshots geändert wurden. Die entsprechenden Informationen finden Sie in den maven-metadata.xml-Dateien des Repositorys. Ich suche nach Tools, um die Verarbeitung dieser Dateien selbst zu vermeiden. –

+0

'z.B.' Das bedeutet zum Beispiel, dass die ursprüngliche Frage so klingt, als ob Sie an etwas ähnlich wie Bamboo oder Buildforge arbeiten, anstatt diese Tools speziell zu verwenden. –

Antwort

1

Es sieht aus wie Mercury den höheren Level-API bietet für die ich suchte.

Mercury bietet eine implementierungsneutrale Möglichkeit zum Zugriff auf GAV-basierte Repositorys, einschließlich AV-Repositorys, wie OSGi. Der OSGi-Zugriff ist noch nicht implementiert. Unter Zugriff verstehe ich das Lesen von Artefakten und Metadaten aus Repositories und das Schreiben von Artefakten in Repositories. Metadaten werden durch Schreiben aktualisiert.

Alle Aufrufe akzeptieren eine Sammlung von Anforderungen als Eingabe und geben ein Objekt zurück, das getResults ausblendet. Dies ist normalerweise eine Zuordnung < queryElement, Collection> response.Das Antwortobjekt hat Bequemlichkeit methos hasExceptions(), hasResults(), getExceptions(), getResults()

Einer der wichtigsten Bausteine ​​ist eine Hierarchie von Artifact Daten:

  • ArtifactCoordinates - ist wirklich die 3 Komponenten GAV
    • ArtifactBasicMetadata - Koordinaten Plus Typ/Klassifizierer zuzüglich Bequemlichkeit Methoden wie Hash-Berechnung und eine solche
  • ArtifactMetadata fügt eine Liste von Abhängigkeits Objekte, erfasst als ArtifactBasicMetadata
  • DefaultArtifact implementiert Artifact Schnittstelle und fügt pomBlob (byte []) und Datei, dass die Punkte auf tatsächliche binäre
2

Angenommen, Sie verwenden maven als Build-Prozess, möchten Sie, dass ein Plug-in die Überprüfung und bedingte Erstellung durchführt.

Ich kenne keine Maven-Plugin, die genau das tun, was Sie wollen. Jedoch, sollten Sie in der Lage sein, ein paar Plugins für den gleichen Effekt zusammen zu cobble.

Verwenden Sie das Exec-Plugin mit "wget", um die maven-metadata.xml abzurufen. Verwenden Sie dann das xslt-Plugin, um das resultierende XML in einen booleschen Wert zu transformieren, der angibt, ob eine Aktualisierung stattgefunden hat oder nicht. Sie sollten XPath für den Knoten // metadata/versioning/lastUpdated verwenden und ihn mit dem aktuellen Datum und der aktuellen Uhrzeit vergleichen. Schließlich müssen Sie das resultierende transformierte XML untersuchen, um festzustellen, ob Sie mit dem Build fortfahren sollten.

finden diese Plugins http://mojo.codehaus.org/plugins.html

+0

Ich weiß, ich kann es zusammenbasteln und haben. Ich bin auf der Suche nach einer Bibliothek, einem Dienstprogramm oder etwas, das die Notwendigkeit des Hackens vermeidet –

Verwandte Themen