代码之家  ›  专栏  ›  技术社区  ›  Kris Pruden

子级完成后对父级执行目标

  •  2
  • Kris Pruden  · 技术社区  · 15 年前

    我有一个多模块Maven项目(多个层次的嵌套)。通常,当我执行maven构建时 mvn install 不管怎样),Maven将运行父项目的所有目标 之前 继续照顾孩子们。

    我希望能够定义一个在父级上运行的目标,但直到所有子级都被处理完毕。有办法吗?

    具体来说,我想做的是 exec:exec 目标:在文件系统中查找测试结果文件,并将其复制到中心位置,以便由我们的CI系统(CruiseControl)进行聚合。因此,我们也欢迎这个问题的其他解决方案:)

    更新:我忘记提到一个要求:无论构建是否成功,我都需要运行exec目标。

    4 回复  |  直到 15 年前
        1
  •  2
  •   Pascal Thivent    15 年前

    我认为在一个多模块构建的末尾,不可能从父级做一些事情(这只是事情的工作方式)。但是,您是否考虑根据所有子项目(因此它将是反应堆构建中的“最后一个”项目)添加模块(可能是pom类型)并运行? exec:exec 在这个模块中?我可能遗漏了一些东西,因为我不明白为什么这不起作用。

        2
  •  2
  •   Kris Pruden    15 年前

    基于其他的答案和我自己的后续调查,我描述的和Maven不一样。

    然而,我能够解决我的问题,尽管解决方案是专门针对CruiseControl的。基本上,我将执行目标绑定到站点前阶段,然后将站点前指定为 sitegoal 在我的CruiseControl配置中。这个 场地目标 在主要目标之后运行,并且这样做,不管构建是否成功。

    我想其他的CI系统也提供类似的功能。

        3
  •  1
  •   Niels Bech Nielsen    15 年前

    听起来更像一个报告插件。创建maven插件实际上非常简单。

        4
  •  0
  •   Michael Rutherfurd    15 年前

    为什么不在每个子项目的验证阶段附加一个Antrun复制步骤,以便将结果复制到父位置。然后,您可以在父级中使用类似的步骤进行CI聚合。

    或者,您可以让每个子项目使用Simliar技术进行自己的CI集成。

    我们现在使用该技术为一个JAR生成WebSphereEJB存根,以及其他东西。