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

时间:2014-02-19 17:56:35

标签: java eclipse ant pde

我有一个非常大的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 个答案:

答案 0 :(得分:2)

您所看到的是预期的,因为您(可能)比较了两件不同的事情:

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

使用PDE-build进行构建时,您也可以打包产品(生成包和功能,解决插件依赖关系,JAR-ing所有内容等),这需要更多时间。 (对于我们的项目,这需要大约6-7分钟。)IDE中的这个等价物是打开.product文件,在编辑器的“overview”选项卡上,选择“eclipse product export wizard”。

至于如何加速构建的提示:我所知道的没有银弹。但是:搜索“tycho build eclipse”,和/或查看http://www.vogella.com/tutorials/EclipseTycho/article.htmlhttps://eclipse.org/tycho/。换句话说:您可以更改您的构建以使用Tycho,它可以让您单独构建每个插件(如果需要,还可以逐步构建)。

答案 1 :(得分:2)

我在一个大型RCP项目上工作,大约有50,000个类,分布在工作区中的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,并且通常由于时间不够)但是看起来确实是一个更好的构建系统。