2014-02-19 44 views
1

我有一个包含大约300个包的非常大的OSGi项目。当我在Eclipse中导入项目并执行Project -> Clean...Project -> Build All时,大约需要10分钟,直到构建完所有内容并开始我的应用程序。与Eclipse相比,使用Ant构建PDE极其缓慢

我认为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

你们看到的预计,因为你(可能)比较两个不同的东西:

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

当使用PDE-build构建时,您也打包产品(生成捆绑包和功能,解析插件依赖项,JAR-everything,等等),这需要更多的时间。 (对于我们的项目,大约需要6-7分钟。)IDE中的等效项目将打开您的.product文件,并在编辑器的“overview”选项卡中选择“eclipse产品导出向导”。

至于提示如何加快构建:没有我知道的银弹。但是:搜索“tycho build eclipse”,和/或参见http://www.vogella.com/tutorials/EclipseTycho/article.htmlhttps://eclipse.org/tycho/。换句话说:您可以更改您的版本以使用Tycho,它可以让您分别构建每个插件(如果需要,可以逐渐增加)。

+0

非常感谢。至少,这是PDE构建如此缓慢的原因。当我有时间时,我会看看第谷。 –

2

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

PDE无头构建过程不是非常有效,它做了很多疯狂的I/O。在构建开始时,通常会看到脚本在“generateScript”和“generateFeature”阶段暂停几分钟。如果你对这些进行了描述,你会发现在计算依赖关系树的时候,build.properties文件会有数百万次读取(我为〜1000个build.properties获得了4千6百万次读取,然后决定停止),所以有些东西不对。现在PDE无头构建系统现在已经在Eclipse中被有效抛弃,转而支持Tycho,所以我怀疑它会被看到。

如果您拥有Eclipse功能,请确保包含的内容十分健全 - 通过在多个位置包含相同的功能,我们发现上述generateScript/generateFeature阶段可能需要比所需时间长得多的时间。

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

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