【问题标题】:PDE build with Ant is extremly slow compared to Eclipse与 Eclipse 相比,使用 Ant 构建 PDE 非常慢
【发布时间】:2014-02-19 17:56:34
【问题描述】:

我有一个非常大的 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.:我知道这个问题很笼统,但即使是提示如何找到性能不足也会有所帮助。

【问题讨论】:

    标签: java eclipse ant pde


    【解决方案1】:

    您所看到的是预期的,因为您(可能)在比较两个不同的事物:

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

    使用 PDE-build 构建时,您也在打包产品(生成捆绑包和功能、解决插件依赖项、JAR-ing 一切等),这需要更多时间。 (对于我们的项目,这大约需要 6 到 7 分钟。)在 IDE 中相当于打开您的 .product 文件,然后在编辑器的“概览”选项卡上选择“eclipse 产品导出向导”。

    关于如何加快构建的提示:据我所知,没有灵丹妙药。但是:搜索“tycho build eclipse”,和/或查看http://www.vogella.com/tutorials/EclipseTycho/article.htmlhttps://eclipse.org/tycho/。换句话说:您可以将构建更改为使用 Tycho,这使您能够单独构建每个插件(如果需要,可以增量构建)。

    【讨论】:

    • 非常感谢。至少,这可以解释为什么 PDE 构建如此缓慢。有时间我会看看第谷的。
    【解决方案2】:

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

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

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

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

    最后,尝试将您的构建移动到 Tycho/Maven。除了在我们的一些支持项目上,我们还没有能够做到这一点(部分是因为我们的目标平台是如何构建的,部分是因为在几个地方使用了 customBuildCallbacks,而且通常是因为时间不够)但是它看起来确实是一个更好的构建系统。

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2017-05-07
      • 1970-01-01
      • 2017-06-05
      • 2015-01-27
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      相关资源
      最近更新 更多