Eclipse:用于无界面PDE构建的最小Eclipse安装是什么?

13

我目前正在使用PDE构建(headless mode)来构建我的OSGI Bundle项目。PDE Antrunner任务使用Eclipse安装,我只是将其指向我的本地Eclipse安装。

不幸的是,我的Eclipse安装文件大约有260MB,但我认为标准的Eclipse安装并不需要所有这些插件才能进行PDE构建。

有人知道进行headless PDE构建所需的最小插件列表是什么吗? 我实际上在一个自定义的目标平台文件夹中拥有所有的依赖项,所以我想我唯一需要的是PDE构建实际需要的依赖项。但是那些是什么? 我能把Eclipse安装文件缩小到最小限度吗?

我的目标是将这个"build-eclipse"文件夹也提交到我的项目的SVN中,这样当你将它检出时,你就拥有了开始全面构建所需的一切,而不需要触及任何build.properties。但如果我可能只需要其中20MB,我不想提交266MB的Eclipse。

谢谢 Christoph

2个回答

5

今天我最终不得不自己解决这个问题(解决由于目录名中有空格,未能将其包含在PDE Build生成的捆绑包中导致的问题)。最终,我得到了一个可以构建我的Java插件集合的东西。我不知道它是否“最小化”,但它是针对Java PDE Build的,并且比完整的Eclipse IDE安装要小得多。

我记了一些草稿笔记;这里可能会有一些遗漏或多余的步骤,但主要还是可以指导的。

我:

  1. 启动最近的Eclipse IDE(在我的情况下,是我目前使用的3.5实例)。
  2. 使用一个临时工作区,这样目标平台的更改就不会影响我的“真正”项目。
  3. 确保目标平台设置为我想从其中获取PDE构建器插件的位置(在我的情况下,只是运行中的Eclipse)。 (Window | Preferences... | Plug-in Development | Target Platform)
  4. 创建一个新的空项目。
  5. 在该项目中创建一个新的产品配置(使用“基本设置”)。
  6. 在新产品配置的“概述”页面上,取消选中“产品包括本地启动程序文件”。
  7. 在依赖项中,将以下插件指定为构成产品的插件:
    • org.eclipse.pde.build
    • org.apache.ant
    • org.eclipse.jdt.core
  8. 勾选“包括可选依赖项…”
  9. 点击“添加所需插件”。
  10. 在Package Explorer中右键单击产品定义,选择“导出…| Eclipse产品”。
  11. 告诉它我想要我的PDE构建器实例去哪里。
  12. 取消选中“导出之前同步”。
  13. 取消选中“生成元数据存储库”。
  14. 点击“完成”。
现在我可以通过调用以下宏来从我的普通Ant构建中启动PDE Build(是否有更好的方法?):
<macrodef name="build-a-product">
    <attribute name="config-dir"/>
    <sequential>
        <property name="product-build-file" value="${pde-builder-path}\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\productBuild\productBuild.xml" />
        <java jar="${pde-builder-path}\plugins\org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar" fork="yes" failonerror="yes" >
            <arg value="-application" />
            <arg value="org.eclipse.ant.core.antRunner" />

            <arg value="-buildfile" />
            <arg value="${product-build-file}" />

            <arg value="-Dbuilder=@{config-dir}" />

            <arg value="-Dbasedir=${basedir}" />
        </java>
    </sequential>
</macrodef>

嗨,Woody,这是个好消息。最近我没有足够的时间继续深入研究这个问题。但也许我会找到一些时间,以便我可以验证你的发现。你能减少多少MB的构建Eclipse安装包大小呢? - Christoph
在我的情况下,结果略小于20 MB。这似乎对于它的用途来说有点大——也许我不应该包括那些可选的依赖项——但这对我来说是可行的。 - Woody Zenfell III
我今天需要再次这样做,以便我可以在Java 8中构建。这是现在我的Eclipse IDE是Mars.1时不同的地方:1)第7步中的“Dependencies”选项卡现在标记为“Contents”。2)我还添加了(在步骤7中)org.eclipse.equinox.launcher插件,以便我有一种调用PDE Build的方式。3)导出后,在我的Ant buildfile中更新了一些特定插件版本的路径。就这样!新的PDE Build导出文件大约为28 MB(在Windows上)。 - Woody Zenfell III

3

我无法直接回答你的问题,但我可以稍微解释一下,希望能帮助你找到真正的答案。

在我的PDE经验中,我发现以下区别非常有用:

  • 我用于交互式编辑的Eclipse IDE
  • 我用于无头PDE构建的“Eclipse”安装
  • “目标平台”(构建所依赖的插件/特性等集合)

听起来这些在你的脑海中也是清晰而独立的概念:你已经将“目标平台”隔离出来,正在寻找将交互式Eclipse与PDE构建器隔离开的方法。

你可以尝试在交互式Eclipse中创建一个新的(空白)工作区(只是为了确保你看到的是它,而不是你的目标平台),打开“插件”视图,右键单击一个看起来很有前途的插件,如org.eclipse.pde.build,然后选择“打开依赖项”。 “扁平布局”可能比分层更有用,虽然在我的Eclipse中,我似乎无法复制和粘贴此列表。

在我的情况下,这并没有提到JDT中的任何内容,这让我想到实际上尝试构建基于Java的插件会失败,但希望这能提供另一个线索(例如“找不到org.eclipse.jdt”之类的东西)。

似乎应该有一种方法可以使用软件更新机制、目标平台或Buckminster来只命名一个插件,然后所有其他插件就会自动落位。也许你可以使用目标平台,选择所需的插件,点击选择必需插件的按钮,然后以某种方式导出一个“构建”,它将有效地收集所有这些插件?

我承认我们之前检查过一个交互式Eclipse,并将其用作我们的PDE构建器。我们不会进行交互操作,并且我们也维护了一个单独的目标平台。我们的PDE构建器显然不是最小的,但也许还需要改进,所以我希望你能在这个空间中更新你的发现。


嗨,Woody,感谢你的回答。你对这三个概念的理解是完全正确的...那正是我所说的。我基本上想摆脱“交互式Eclipse相关插件”。你的想法听起来不错,我明天会试一试。我会在这里发布我的发现。我想知道我们是否是唯一一个考虑这个问题的人?谢谢,Christoph - Christoph
好的,这是我的第一次发现:org.eclipse.pde.build和依赖关系不足以进行构建。构建过程在没有调试输出的情况下停止,因此我首先必须找出在幕后实际发生了什么。您知道有哪些命令行参数可以获取有关构建过程内部的更多调试输出吗?(例如-verbose或其他内容) 如果我找到缺少什么,我会逐步查找所需的插件,并在此发布。谢谢 克里斯托夫 - Christoph
Christoph,我不确定……但是当你运行命令行PDE构建时,你会在某个地方启动一个OSGi运行时,据我所知,它类似于Eclipse的“工作区”,可以缓存依赖信息等,并且 - 在这里相关 - 放置日志文件。也许你可以找出那个“工作区”在哪里,并读取它的日志? - Woody Zenfell III

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接