我正在为我们的项目创建基于Eclipse 3.6.2的产品。我们的想法是创建一个Eclipse安装,它包含我们需要的所有插件,并且我们需要为项目设置所有配置。
作为其中的一部分,我想确保包含更新网站,但我该怎么做?
如果我选择导出首选项,则不包括更新站点。我可以从首选项页面导出更新站点并获取XML文件,但是如何将其包含在我的config.ini文件中?或者还有其他方式吗?
目标是,当用户运行自定义Eclipse产品时,我们的更新站点将位于站点列表中。理想情况下,列表中唯一的。
答案 0 :(得分:7)
您可以添加p2.inf
文件,在安装内容时指示特定的更新站点:
instructions.configure=\
addRepository(type:0,location:http${#58}//www.eclipse.org/equinox/p2/testing/updateSite);\ addRepository(type:1,location:http${#58}//www.eclipse.org/equinox/p2/testing/updateSite);
这会添加www.eclipse.org/equinox/p2/testing/updateSite
。
此文件(p2.inf
)需要与MANIFEST.MF
文件位于同一目录中。您可以阅读有关此here的更多信息。
答案 1 :(得分:1)
因为很可能我不得不再次这样做,而且我没有机会记得下次怎么做,我会写下我经历的步骤:
我创建了一个包含说明的p2.inf文件;
instructions.configure=\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:http${#58}//<my_url_here>,name:<my_name_here>,enabled:true);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:http${#58}//<my_url_here>,name:<my_name_here>,enabled:true);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:http${#58}//<my_url_here>,name:<my_name_here>,enabled:true);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:http${#58}//<my_url_here>,name:<my_name_here>,enabled:true);`
根据the Eclipse wiki,inf-file可以放在与feature.xml
相同的目录中,这就是我所做的。
我有一个由此功能组成的产品,因此我使用Eclipse产品导出向导导出了该产品。我确保建立一个存储库。
构建完成后,存储库有一个content.jar。在content.jar里面有一个content.xml。检查一下,我发现:
<touchpointData size='1'>
<instructions size='1'>
<instruction key='configure'>
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(<all my update sites>);
</instruction>
</instructions>
</touchpointData>
因此,这验证了导出确实看到了我的p2.inf文件并对其执行了一些操作。
要从存储库安装,我使用了Eclipse Director脚本:
cmd /c "C:\Program\Eclipse\director\director -consoleLog -bundlepool c:/program/eclipse/eclipse3.6_custom -profileProperties "org.eclipse.update.install.features=true" -i MyProduct.Product -r "file:/C:\eclipse\exported\repository" -d c:/program/eclipse/eclipse3.6_custom -p helios"`
该脚本将产品从存储库安装到目标。