以编程方式配置p2更新存储库

时间:2010-07-15 09:58:19

标签: java eclipse-rcp rcp p2

Eclipse wiki中有一篇文章如何通过向产品中添加静态配置文件来配置用户的p2默认存储库:

Equinox/p2/Adding Self-Update to an RCP Application - Configuring the user's default repositories

当用户更改某些配置详细信息时,我希望在Java类中以编程方式执行相同操作。我找不到合适的p2 API文档。

4 个答案:

答案 0 :(得分:4)

我找到了解决方案。这很容易 - 遗憾的是没有文件......

    // from bundle org.eclipse.equinox.p2.console
    import org.eclipse.equinox.internal.p2.console.ProvisioningHelper;

    URI repoUri = new URI(UPDATE_SITE_URL);
    try {
        ProvisioningHelper.addMetadataRepository(repoUri);         
    } catch( Exception e ) {
        LOG.warn("Can not add update repository: " + repoUri);           
    }
    try {
        ProvisioningHelper.addArtifactRepository(repoUri);          
    } catch( Exception e ) {
        LOG.warn("Can not add update repository: " + repoUri);
    }

答案 1 :(得分:4)

将此解决方案用于基于Eclipse 3.7的应用程序:

final ProvisioningUI ui = ProvUIActivator.getDefault().getProvisioningUI();
IArtifactRepositoryManager artifactManager = ProvUI.getArtifactRepositoryManager(ui.getSession());
artifactManager.addRepository(new URI(UPDATE_SITE_URL);

IMetadataRepositoryManager metadataManager = ProvUI.getMetadataRepositoryManager(ui.getSession());
metadataManager.addRepository(new URI(UPDATE_SITE_URL);

对于 ProvUI ProvisioningUI ,您必须导入包 org.eclipse.equinox.p2.ui org.eclipse。 equinox.p2.operations (等等)。

答案 2 :(得分:3)

此外,您可以使用ElementUtils添加多个存储库,也可以对它们进行排序。

MetadataRepositoryElement[] element = new MetadataRepositoryElement[links.length];
    for (int i = 0; i < links.length; i++) {
        element[i] = new MetadataRepositoryElement(null, new URI(links[i]), true);
        element[i].setNickname("Link-"+i);
    }
    ElementUtils.updateRepositoryUsingElements(element, null);

这些链接将按字母顺序排列。

答案 3 :(得分:1)

Google对这个问题的查询很高,而且发布它的方法还不是很好:

如果有人像我一样通过Google找到此页面,我就解决了这个问题。您可以使用org.eclipse.equinox.internal.p2.ui.model.ElementUtils.updateRepositoryUsingElements以编程方式设置存储库。完整代码可以找到here.