代码之家  ›  专栏  ›  技术社区  ›  Thomas Uhrig

与Eclipse相比,使用Ant构建PDE的速度非常慢

  •  1
  • Thomas Uhrig  · 技术社区  · 12 年前

    我有一个非常大的OSGi项目,大约有300个捆绑包。当我在Eclipse中导入项目并执行 Project -> Clean... Project -> Build All 大约需要10分钟,直到一切都构建好,我才能启动我的应用程序。

    我认为10分钟已经很长了,但当我使用Ant脚本执行无头PDE构建时,大约需要一个小时!我觉得有点不对劲。。。

    你有什么建议告诉我如何加快基于Ant的构建吗?或者如何追踪问题?我使用普通的PDE构建,命令如下。我不知道为什么它比Eclipse中的完整构建慢得多。

    java -jar eclipse/plugins/org.eclipse.equinox.launcher_<version>.jar -application org.eclipse.ant.core.antRunner -buildfile  eclipse/plugins/org.eclipse.pde.build_<version>/scripts/build.xml -Dbuilder=<path to the build configuration folder>
    

    谢谢 托马斯

    PS.:我知道这个问题很笼统,但即使是一个如何发现性能不足的提示也会有所帮助。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Eirik W    12 年前

    你所看到的是意料之中的,因为你(可能)在比较两件不同的事情:

    在EclipseIDE中强制重建时,只需编译所有java文件。(对于我们的270捆绑包项目,这大约需要1-2分钟。)

    当使用PDE构建时,您也在打包产品(生成捆绑包和特性、解决插件依赖关系、JAR文件等),这需要花费更多的时间。(对于我们的项目,这大约需要6-7分钟。)在IDE中这样做的好处是打开.product文件,然后在编辑器的“概述”选项卡上选择“eclipse产品导出向导”。

    至于如何加快构建的提示:我知道没有什么灵丹妙药。但是:搜索“tycho build eclipse”,和/或查看 http://www.vogella.com/tutorials/EclipseTycho/article.html https://eclipse.org/tycho/ 换言之:您可以更改您的版本以使用Tycho,这将允许您单独构建每个插件(如果需要,可以增量构建)。

        2
  •  2
  •   James Fry    11 年前

    我在一个大型RCP项目中工作,工作空间中有大约50k个类,分布在850个项目/捆绑包中(目标平台中有类似数量的捆绑包)。我们在桌面和Jenkins服务器中都有SSD,以加快构建速度。Linux上的构建速度比Windows快得多。Windows工作区的刷新和清理需要大约2-3分钟,而完整的Linux无头构建需要大约25分钟(在Windows上需要一个多小时)。

    PDE无头构建过程效率不高,而且会进行大量疯狂的I/O。在构建开始时,通常会看到脚本在“generateScript”和“generateFeature”阶段暂停几分钟。如果您分析这些文件,您会发现在计算依赖关系树时,build.properties文件有数百万次读取(我对1000个build.properties文件读取了4600万次,然后决定停止),因此有些地方不正确。PDE Headless构建系统现在在Eclipse中被有效地抛弃,取而代之的是Tycho,所以我怀疑它是否会受到关注。

    如果您有Eclipse特性,请确保包含的内容是合理的-通过在多个地方包含相同的特性,我们发现上面的generateScript/generateFeature阶段可能需要比所需的时间更长的时间。

    如果你可以分阶段构建你的项目,这样你就可以将一个阶段的产品作为下一阶段的目标平台,那么这真的很有帮助。

    最后,尝试将构建移到Tycho/Maven。除了我们的一些支持项目之外,我们还没能做到这一点(部分原因是我们的目标平台是如何构建的,部分原因是在几个地方使用了customBuildCallbacks,通常是由于时间不足),但它似乎是一个更好的构建系统。

    推荐文章