【问题标题】:Maven - extract resources (plus binaries) modified since revisionMaven - 提取自修订以来修改的资源(加上二进制文件)
【发布时间】:2013-04-16 08:58:21
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 在任何方面都没有 delta 包或部署的概念,因为 maven 的概念不同。创建所需的整个包,例如 ear、zip、jar 或任何需要的东西。

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


【解决方案1】:

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

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

【讨论】:

  • 您对奇怪的要求是正确的,这也表明在 StackOverflow 和 Google 上都缺乏答案。正如@khmarbaise 所指出的,此要求不是 Maven 理念的一部分。这是一个遗留要求,应该决定它是否有意义。作为最后的手段,我们将修改现有脚本,即使这意味着污染 Maven 构建。
【解决方案2】:

有一次我在相同的情况下参与了此类 Maven 插件的开发——从 Ant 迁移到 Maven,增量构建。

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

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

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

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

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2013-10-30
    • 2011-11-20
    • 2011-05-13
    • 2011-05-27
    相关资源
    最近更新 更多