2015-06-20 52 views
1

我有两个行家项目:Maven的执行两个模块依次

  • 一个构建几个OSGi包,并创建包含它们
  • 另一构建与第谷使用这些束Eclipse插件的本地P2库

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

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

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

不行的,因为第谷的尝试,甚至它的存在as described here前使用第一POM产生的存储库。

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

澄清:

  • tycho-project取决于p2-repository-generator,故后执行。
  • 但Tycho使用自定义lifecycle participant,它试图通过afterProjectsRead回调来解决p2依赖关系 - 这太快了,因为只有在p2-repository-generator构建它之后,p2存储库才会在那里。
  • 这aggretor工作我曾经手动执行p2-repository-generator后,因为那时tycho-project能够找到它
+0

仅供参考:有[计划使Tycho尚未解决afterProjectsRead中的依赖关系](https://bugs.eclipse.org/bugs/show_bug.cgi?id=353889),但它仍需要一段时间执行它们。 – oberlies

回答

1

正如你正确地指出,第谷做事的身材,如果生成相同的生成内容由第谷被用来建造这导致的问题非常早。解决此问题的方法是在调用maven-invoker-plugin调用中使用Tycho包装构建的一部分。

1

你尝试设置上p2-repository-generator依赖于tycho-project产生的P2存储库?恕我直言,它应该强制执行你需要的构建序列。

+1

是的,这取决于它。但tycho使用'AbstractMavenLifecycleParticipant :: afterProjectsRead'实现它的依赖解析,在maven解析该模块后立即执行,而不是在构建依赖关系之后执行。 – Dutow