5

有一个 Cruisecontrol 插件可以检查对快照依赖项的更改,并在需要时触发构建。这涉及使用 Maven 嵌入器下载依赖项,然后检查本地存储库中快照文件的时间戳。这工作正常,但涉及下载所有父项和依赖项以检查一些时间戳。

我正在开发一个分布式 CI 系统(例如 Bamboo/Buildforge),并希望避免下载整个依赖层次结构来检查是否需要构建。可以通过检查远程存储库上的 maven-metadata.xml 来确定快照依赖项的构建日期。

是否有任何插件或工具可以简化此过程?

4

2 回答 2

2

假设您使用 maven 作为构建过程,您需要一个插件来执行检查和条件构建。

我不知道有任何 Maven 插件可以完全满足您的需求。但是,您应该能够将几个插件拼凑在一起以获得相同的效果。

使用带有“wget”的exec 插件来获取 maven-metadata.xml。然后使用xslt 插件将生成的 XML 转换为布尔值,该值将指示是否发生了更新。您需要 XPath 到 //metadata/versioning/lastUpdated 节点并将其与当前日期和时间进行比较。最后,您需要检查生成的转换后的 XML 以确定是否应该继续构建。

在http://mojo.codehaus.org/plugins.html找到这些插件

于 2009-08-05T16:27:53.157 回答
1

看起来Mercury提供了我正在寻找的更高级别的 API。

Mercury 提供了一种实现中立的方式来访问基于 GAV 的存储库,包括 AV 存储库,如 OSGi。OSGi 访问尚未实现。通过访问,我的意思是从存储库中读取工件和元数据并将工件写入存储库,元数据由写入更新。

所有的调用都接受一个请求集合作为输入,并返回一个隐藏 getResults 的对象,通常是一个 map<queryElement, Collection> 响应。响应对象有方便的方法 hasExceptions(), hasResults(), getExceptions(), getResults()

一个关键的构建块是工件数据的层次结构:

  • ArtifactCoordinates - 真正的 3 个组件 GAV
    • ArtifactBasicMetadata - 是坐标加上类型/分类器以及哈希计算等便利方法
  • ArtifactMetadata添加依赖对象列表,捕获为ArtifactBasicMetadata
  • DefaultArtifact实现Artifact接口并添加 pomBlob (byte[]) 和指向实际二进制文件的文件
于 2009-09-12T08:58:30.733 回答