2009-07-04 12 views
5

C'è un plugin cruisecontrol che controlla le modifiche alle dipendenze dello snapshot, attivando una build se necessario. Ciò comporta l'utilizzo dell'espansore Maven per scaricare le dipendenze, quindi il controllo dei timestamp dei file di snapshot nel repository locale. Funziona bene, ma comporta il download di tutti i genitori e le dipendenze per controllare alcuni timestamp.verifica delle modifiche delle dipendenze dello snapshot di Maven sul server di integrazione continua

Sto lavorando su un sistema CI distribuito (ad esempio Bamboo/Buildforge) e vorrei evitare di scaricare l'intera gerarchia delle dipendenze per verificare se è richiesta una build. È possibile determinare la data di costruzione di una dipendenza di istantanea controllando maven-metadata.xml sul repository remoto.

Esistono plug-in o strumenti per semplificare questo processo?

+0

vuoi dire che stai costruendo un sistema CI distribuito? –

+0

No, sto usando Buildforge come sistema CI, ogni build può accadere su un agente arbitrario e voglio evitare di risolvere l'intera gerarchia delle dipendenze di Maven per determinare se sono state cambiate le istantanee. Le informazioni per farlo sono nei file maven-metadata.xml del repository. Sto cercando strumenti per evitare di elaborare questi file da solo. –

+0

"ad es." significa "per esempio", quindi la domanda originale suona come se si stesse lavorando a qualcosa di simile a Bamboo o Buildforge, piuttosto che usare specificamente quegli strumenti. –

risposta

1

Sembra Mercury fornisce le API di livello superiore che cercavo.

Mercury fornisce un modo neutrale all'implementazione per accedere ai repository basati su GAV, inclusi i repository AV, come OSGi. L'accesso OSGi non è ancora stato implementato. Per accesso intendo la lettura di artefatti e metadati dai repository e la scrittura di artefatti nei repository, i metadati vengono aggiornati dalle scritture.

Tutte le chiamate accettano una raccolta di richieste come input e restituiscono un oggetto che nasconde getResults, che normalmente è una mappa < queryElement, Collection> response.L'oggetto risposta ha hasExceptions convenienza Methos(), hasResults(), getExceptions(), getResults()

Uno degli elementi chiave è una gerarchia di dati Artefatto:

  • ArtifactCoordinates - è veramente il 3 componenti GAV
    • ArtifactBasicMetadata - è inclusa coordinate tipo/classificatore più convenienti metodi come calcolo hash e tale
  • ArtifactMetadata aggiunge un elenco di oggetti di dipendenza, catturata come ArtifactBasicMetadata
  • DefaultArtifact implementa artefatto interfaccia e aggiunge pomBlob (byte []) e il file, che i punti di effettivo binario
2

Supponendo che si usi Maven come processo di compilazione, si desidera che un plug-in esegua il controllo e la generazione condizionale.

Non conosco alcun plugin di Maven che farà esattamente ciò che desideri. Tuttavia, dovresti essere in grado di unire insieme un paio di plugin per lo stesso effetto.

Utilizzare il plug-in exec con "wget" per recuperare maven-metadata.xml. Quindi utilizzare il plug-in xslt per trasformare l'XML risultante in un valore booleano che indicherà se si è verificato o meno un aggiornamento. Dovrai utilizzare XPath nel nodo // metadata/versioning/lastUpdated e confrontarlo con la data e l'ora correnti. Infine, è necessario esaminare il XML trasformato risultante per determinare se è necessario procedere con la generazione.

Trova questi plugin a http://mojo.codehaus.org/plugins.html

+0

So che posso accartocciarlo insieme e averlo. Sto cercando una libreria, un'utilità o qualcosa che eviti la necessità dell'hacking –

Problemi correlati