代码之家  ›  专栏  ›  技术社区  ›  uı6ʎɹnɯ ꞁəıuɐp

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

  •  3
  • uı6ʎɹnɯ ꞁəıuɐp  · 技术社区  · 14 年前

    EclipseWiki中有一篇文章介绍了如何通过向产品中添加静态conf文件来配置RCP应用程序的用户默认存储库:

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

    4 回复  |  直到 14 年前
        1
  •  4
  •   uı6ʎɹnɯ ꞁəıuɐp    13 年前

    将此解决方案用于基于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);
    

    为了 普罗维 你必须导入包 org.eclipse.equinox.p2.ui org.eclipse.equinox.p2.运营 (除其他外)。

        2
  •  3
  •   uı6ʎɹnɯ ꞁəıuɐp    14 年前

    我找到了解决办法。很简单-不幸的是没有文档。。。

        // 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);
        }
    
        3
  •  3
  •   M Faisal Hameed    11 年前

    此外,您可以使用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);
    

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

        4
  •  0
  •   Robert Coop    12 年前

    这是谷歌对这一问题的高要求,但仍然没有一个很好的方法:

    here.