2009-07-04 12 views
5

Hay un complemento de control de crucero que comprueba los cambios en las dependencias de las instantáneas, lo que provoca una compilación si es necesario. Esto implica usar el embebedor Maven para descargar las dependencias y luego verificar las marcas de tiempo de los archivos de instantáneas en el repositorio local. Esto funciona bien, pero implica la descarga de todos los padres y dependencias para comprobar algunas marcas de tiempo.comprobando los cambios de dependencia de maven snapshot en el servidor de integración continua

Estoy trabajando en un sistema de CI distribuido (por ejemplo, Bamboo/Buildforge) y me gustaría evitar descargar toda la jerarquía de dependencias para comprobar si es necesaria una compilación. Es posible determinar la fecha de compilación de una dependencia de instantánea marcando maven-metadata.xml en el repositorio remoto.

¿Existen complementos o herramientas para agilizar este proceso?

+0

¿quiere decir que está construyendo un sistema de CI distribuido? –

+0

No, estoy usando Buildforge como el sistema de CI, cada compilación puede tener lugar en un agente arbitrario, y quiero evitar resolver toda la jerarquía de dependencias Maven para determinar si las instantáneas han cambiado. La información para hacerlo está en los archivos maven-metadata.xml del repositorio. Estoy buscando herramientas para evitar el procesamiento de estos archivos. –

+0

'por ejemplo' significa 'por ejemplo', por lo que la pregunta original parece que está trabajando en algo similar a Bamboo o Buildforge, en lugar de utilizar específicamente esas herramientas. –

Respuesta

1

Parece que Mercury proporciona el más alto nivel de API que estaba buscando.

Mercury proporciona una forma neutral de implementación para acceder a los repositorios basados ​​en GAV, incluidos los repositorios de AV, como OSGi. El acceso OSGi aún no está implementado. Por acceso quiero decir leer artefactos y metadatos de repositorios y escribir artefactos en repositorios, los metadatos se actualizan mediante escrituras.

Todas las llamadas aceptan una colección de solicitudes como entrada y devuelven un objeto que oculta getResults, que normalmente es un mapa < queryElement, Collection> response.El objeto respuesta tiene hasExceptions conveniencia Methos(), hasResults(), getExceptions(), getResults()

Uno de los elementos fundamentales es una jerarquía de datos Artefacto:

  • ArtifactCoordinates - es verdaderamente el 3 componentes GAV
    • ArtifactBasicMetadata - es más de tipo coordenadas/clasificador más métodos de conveniencia como el cálculo de hash y tal
  • ArtifactMetadata añade una lista de objetos de dependencia, capturado como ArtifactBasicMetadata
  • DefaultArtifact implementa Artefacto interfaz y añade pomBlob (byte []) y el archivo, que apunta a real binario
2

Suponiendo que está utilizando maven como su proceso de compilación, desea un complemento para realizar la compilación condicional y de comprobación.

No conozco ningún plugin de maven que haga exactamente lo que usted quiere. Sin embargo, deberías poder construir un par de complementos para el mismo efecto.

Utilice el complemento de ejecución con "wget" para buscar maven-metadata.xml. Luego use el xslt plugin para transformar el XML resultante en un valor booleano que indicará si se ha producido o no una actualización. Querrá XPath para el // metadata/versioning/lastUpdated node y compararlo con la fecha y hora actual. Finalmente, deberá examinar el XML transformado resultante para determinar si debe continuar con la compilación.

leer esos plugins en http://mojo.codehaus.org/plugins.html

+0

Sé que puedo improvisar y tener. Estoy buscando una biblioteca, utilidad o algo que evite la necesidad de piratear –

Cuestiones relacionadas