2

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

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

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

我们实现这一点的方法是记录主要版本的最后一个修订,运行自该修订以来的 svn log 以获取修改源列表,然后使用与源名称(svn log 输出)匹配的自定义脚本与其对应二进制文件,然后将其复制到“增量结构”中。

在将自定义脚本调整为新的 Maven 项目结构之前,我想知道是否有 Maven 方法来完成这一切?

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

4

2 回答 2

1

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

您可以开发自己的 Maven 插件来执行此操作。或者,如果您准备好与 Ant 一起使用的东西,您可以使用Maven ANT 插件,尽管这将被视为滥用 Maven,因为您实际上是在使用 ANT 构建并且可以完全跳过 Maven。我没有看到任何更好的选择。

于 2013-04-16T10:35:53.280 回答
0

一旦我在相同的情况下参与了这样的 Maven 插件的开发——从 Ant 迁移到 Maven,delta 构建。

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

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

因此,如果您打算保持进行增量构建的要求,我建议您花时间编写自定义 Maven 插件。

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

于 2013-05-06T21:39:21.017 回答