Maven - 提取自修订后修改的资源(以及二进制文件)

时间:2013-04-16 08:58:22

标签: svn maven maven-plugin java-ee-5

我们有一个使用Ant构建的Java EE 5项目,我们将其移植到Maven构建基础架构。

我们使用SVN作为版本控制和Jenkins构建服务器。

奇怪的是,一些“补丁”交付仅包括自上一个主要版本以来修改的源和二进制文件,这些称为“补丁增量”。然后将此delta应用于主要版本二进制文件。

我们实现此目的的方法是记录主要版本的最新版本,运行自该修订版本的svn日志以获取已修改源的列表,然后使用与源名称匹配的自定义脚本(从svn日志输出)及其相应的二进制文件,然后在“delta结构”中复制。

在将自定义脚本调整为新的Maven项目结构之前,我想知道是否有Maven方法可以完成所有这些操作?

此外,非常感谢产生这种“三角形结构”的其他想法。

2 个答案:

答案 0 :(得分:1)

您的要求是独一无二的,我怀疑任何现有的插件都能满足它。

您可以开发自己的Maven插件来执行此操作。或者,如果你准备好了可以使用Ant的东西,你可以使用Maven ANT Plugin,虽然这会被视为滥用Maven,因为你真正使用ANT构建并且可以完全跳过Maven。我没有看到更好的选择。

答案 1 :(得分:0)

在相同的情况下,我参与了这种Maven插件的开发 - 从Ant迁移到Maven,delta版本。

我认为开源中不存在这样的插件的原因之一(除了与Maven哲学的冲突)是补丁(delta)的组装规则高度针对每个具体情况。例如,我们的补丁结构由十几个子目录组成,所有子目录都包含在补丁中的不同规则,也受到合并的影响。

但是,在我看来,我们决定编写Maven插件而不是支持旧的Ant脚本是正确的。 Ant代码的测试和支持非常昂贵,与Maven的集成增加了更多的复杂性。另一方面,使用单元和集成测试覆盖用纯Java编写的Maven插件并不是很难,因此可以轻松捕获回归。

因此,如果您计划继续制作delta版本,我建议您花时间编写自定义Maven插件。

我们使用SVNKit库与SVN集成以简化开发(无需解析svn log的文本输出)并使我们的插件独立于环境(无需svn二进制文件在PATH)。