有一个 Cruisecontrol 插件可以检查对快照依赖项的更改,并在需要时触发构建。这涉及使用 Maven 嵌入器下载依赖项,然后检查本地存储库中快照文件的时间戳。这工作正常,但涉及下载所有父项和依赖项以检查一些时间戳。
我正在开发一个分布式 CI 系统(例如 Bamboo/Buildforge),并希望避免下载整个依赖层次结构来检查是否需要构建。可以通过检查远程存储库上的 maven-metadata.xml 来确定快照依赖项的构建日期。
是否有任何插件或工具可以简化此过程?
有一个 Cruisecontrol 插件可以检查对快照依赖项的更改,并在需要时触发构建。这涉及使用 Maven 嵌入器下载依赖项,然后检查本地存储库中快照文件的时间戳。这工作正常,但涉及下载所有父项和依赖项以检查一些时间戳。
我正在开发一个分布式 CI 系统(例如 Bamboo/Buildforge),并希望避免下载整个依赖层次结构来检查是否需要构建。可以通过检查远程存储库上的 maven-metadata.xml 来确定快照依赖项的构建日期。
是否有任何插件或工具可以简化此过程?
假设您使用 maven 作为构建过程,您需要一个插件来执行检查和条件构建。
我不知道有任何 Maven 插件可以完全满足您的需求。但是,您应该能够将几个插件拼凑在一起以获得相同的效果。
使用带有“wget”的exec 插件来获取 maven-metadata.xml。然后使用xslt 插件将生成的 XML 转换为布尔值,该值将指示是否发生了更新。您需要 XPath 到 //metadata/versioning/lastUpdated 节点并将其与当前日期和时间进行比较。最后,您需要检查生成的转换后的 XML 以确定是否应该继续构建。
看起来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[]) 和指向实际二进制文件的文件