2010-07-15 45 views
3

有在Eclipse维基文章如何通过添加一个静态的conf文件到您的产品配置RCP应用程序的用户的P2默认库:配置在P2更新存储库编程

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

我想当用户更改一些配置细节时,在Java类中以编程方式执行相同的操作。我无法找到适当的p2 API文档。

+0

您是否检查过最新的P2 API演示文稿? (不知道它是否有助于您的情况):http://www.slideshare.net/PascalRapicault/discovering-the-p2-api – VonC 2010-07-15 10:34:53

+1

本演示文稿中有3行代码 - 没有更多的API文档。 ProvisioningHelper类的 – 2010-07-15 10:50:21

回答

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); 
    } 
+0

方法是内部的。不方便:( – 2013-04-04 11:31:08

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); 

对于ProvUIProvisioningUI你必须输入束组织。 eclipse.equinox.p2.uiorg.eclipse.equinox.p2.operations(等等)。

+0

Thnaks,这是非常有帮助的。 – 2012-02-14 14:23:40

1

这是高在谷歌查询此问题,而且还是不要做的好方式,它出版:

如果任何人发现通过谷歌这个网页像我一样,我已经解决了这个问题。您可以使用org.eclipse.equinox.internal.p2.ui.model.ElementUtils.updateRepositoryUsingElements以编程方式设置存储库。可以找到完整的代码here.

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); 

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