【问题标题】:Maven execute two modules sequentiallyMaven顺序执行两个模块
【发布时间】:2015-06-20 15:51:12
【问题描述】:

我有两个 maven 项目:

  • 构建几个 OSGi 包并创建一个包含它们的本地 p2 存储库
  • 另一个使用这些包构建了一个带有 tycho 的 Eclipse 插件

当我单独执行它们时,一切正常:第一次执行创建存储库,第二次可以使用它。

但我想创建一个执行两者的 pom。简单的方法:

<modules>
    <module>p2-repository-generator</module>
    <module>tycho-project</module>
</modules>

不起作用,因为 tycho 甚至在它存在之前就尝试使用第一个 pom 生成的存储库as described here

我可以使用 maven 顺序执行两个 maven 任务,而无需外部工具吗?或者我可以将 tycho 的依赖挂钩延迟到构建中的稍后时间点吗?

澄清一下:

  • tycho-project 依赖于p2-repository-generator,所以在它之后执行。
  • 但 Tycho 使用自定义的 lifecycle participant,它尝试通过 afterProjectsRead 回调解决 p2 依赖关系 - 这为时过早,因为 p2 存储库只有在 p2-repository-generator 构建后才会存在。
  • 这个聚合器在我手动执行一次p2-repository-generator 后工作,因为那时tycho-project 能够找到它生成的 p2 存储库

【问题讨论】:

标签: maven tycho


【解决方案1】:

正如您正确指出的那样,Tycho 在构建的早期就做事,如果您在同一个构建中生成供第谷构建使用的内容,这会导致问题。解决此问题的一种方法是使用 Tycho 将构建部分封装在 maven-invoker-plugin 调用中。

【讨论】:

    【解决方案2】:

    您是否尝试为tycho-project 设置对p2-repository-generator 的依赖?恕我直言,它应该在此处强制执行您需要的构建顺序。

    【讨论】:

    • 是的,这取决于它。但是 tycho 使用 AbstractMavenLifecycleParticipant::afterProjectsRead 实现其依赖解析,它在 maven 解析该模块后立即执行,而不是在构建它的依赖项之后。
    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    相关资源
    最近更新 更多