PDE无头构建的目标平台无法工作

6

我目前正在尝试让我的无界面pde-build工作,但我卡在一个点上,不知道该如何继续。

问题是如何定义相关的目标平台以编译插件。

我有一个build.bat文件,其中包含以下调用(全部在一行中):

java -jar D:\target\eclipse\plugins\org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar 
-application org.eclipse.ant.core.antRunner 
-f D:\target\eclipse\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\productBuild\productBuild.xml 
-Dbuilder=c:\pde-build\scripts %*

我尝试从不同的部分创建目标 Eclipse 平台:Eclipse SDK、RCP SDK、Delta Pack 和 PDE-SDK 的所有组合,但它们都没有很好地工作。
我收到了以下错误:
BUILD FAILED
D:\target\eclipse\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\productBuild\productBuild.xml:18: Cannot fin
d ${eclipse.pdebuild.scripts}/build.xml imported from D:\target\eclipse\plugins\org.eclipse.pde.build_3.5.2.R35x_2010011
4\scripts\productBuild\productBuild.xml

变量${eclipse.pdebuild.scripts}未被解析。我也试图通过命令行传递此参数,但随后出现了另一个错误,指缺少svn任务,这非常令人困惑,因为我的本地eclipse安装引用是正常的。

当我将路径从d:/target/eclipse替换为我的本地eclipse安装时,pde构建按预期工作!这导致我认为目标eclipse的配置不正确,但目前我不知道如何配置!

我的目标是首先在本地站点自动化pde构建,而无需引用我的本地eclipse,然后将此构建过程集成到我们正在运行的cruisecontrol实例中。

由于我已经看到关于定义目标eclipse的另一个问题,如果有人能提供有关此问题的提示或事实,我将非常感激。

敬礼, 安德烈亚斯


有关信息,${eclipse.pdebuild.scripts}变量是由antrunner应用程序(在org.eclipse.pde.build插件中的org.eclipse.pde.internal.build.properties包中)在Java代码中设置的。 - Manuel Selva
3个回答

5
当执行无头构建时,目标可以与实际运行构建的eclipse分开。您在这里遇到的问题是,用于运行构建的eclipse没有正确安装PDE/Build。
这就是为什么${eclipse.pdebuild.scripts}未设置的原因,因为该eclipse实例未安装PDE/Build,org.eclipse.pde.build捆绑包未被解决,并且设置此属性的代码从未被调用。同样,PDE/Build任务所需的必要ant类路径条目也不会被正确设置。
您需要安装了PDE的Eclipse来运行构建,但构建的目标可以与此分开。
-Dbuilder=c:\pde-build\scripts下找到的build.properties文件中,您可以设置多个properties
  1. baseLocation 是指目标 Eclipse 的路径。
  2. buildDirectory 是实际构建的位置。源代码将被获取到 plugins/ 和 features/ 子文件夹中,但如果这里已经有二进制插件,则它们也将成为目标的一部分。
  3. pluginPath 是包含其他位置的路径列表(在 Windows 上用 ';' 分隔,在 Linux 上用 ':' 分隔),这些位置可以是以下几种情况:
    1. 类似于 Eclipse 安装的根目录,具有 plugins/ 和 features/ 子文件夹。 这是提供 Delta-Pack 的好方法,而不仅仅是在 Eclipse 安装的顶部解压缩它。
    2. 类似于工作区的文件夹的根目录,其中所有子文件夹都根据是否存在清单或 feature.xml 被视为插件或功能。
    3. 捆绑包或功能的根目录或捆绑包的 jar 文件。
  4. 如果您正在进行 p2 构建 (p2.gathering = true),您还可以在 ${repoBaseLocation} 下提供 p2 存储库,这些存储库将被转换并放置在 ${transformedRepoLocation} 下,并将成为您的目标的一部分,在构建过程中将重用那里的 p2 元数据。reused

嗨,安德鲁, 感谢您的清晰解释。我现在对此有了更清楚的理解!希望其他人也是如此;-) - Andreas

0

经过更多的调查,我发现了我到目前为止做错了什么。正如我上面提到的,定义目标平台并不像将SDK和插件复制到一个位置那么容易(就像在Eclipse开发早期一样)。

目前的工作解决方案是:将Eclipse SDK复制到目标位置并运行此版本。在其中安装必要的PDE-Tools以启用插件开发。之后,关闭IDE并将Delta Pack + 相应的svn插件(我使用了来自sourceforge的org.eclipse.pde.build.svn-1.0.1RC2)复制到目标平台中,然后您就完成了。 现在我的自动化PDE构建正在按预期运行。

现在唯一的小问题是:结果产品包含特定于Eclipse的菜单项,在我从dev-eclipse内部运行时不存在。

有什么提示吗?


0

嗨,Manuel,我在这里写了一个答案,带我找到了一个可行的解决方案。但我仍在寻找“最佳”的目标平台。尽管如此,我的产品包含所有必需的插件,因此可以运行。我尝试了模板+视图插件,结果是一个48MB的压缩文件;-)。 - Andreas

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