2010-07-15 2 views
3

Существует статья в вики Eclipse, как настроить p2 по умолчанию пользователя хранилищами в RCP приложения путем добавления статического файла конф к вашему продукту:Настройка репозитория обновлений p2 программным

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

Я хочу делать то же самое программно в классе Java, когда пользователь изменяет некоторые детали конфигурации. Для этого я не мог найти подходящую документацию API p2.

+0

Вы проверили новейшую презентацию P2 API? (не уверен, что это помогает в вашем случае): http://www.slideshare.net/PascalRapicault/discovering-the-p2-api – VonC

+1

В этой презентации есть 3 строки кода - больше нет документации по API. –

ответ

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

методы класса ProvisioningHelper являются внутренними. Недоступная сторона :( –

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 вы должны импортировать Связки орг. eclipse.equinox.p2.ui и org.eclipse.equinox.p2.operations (среди прочих).

+0

Thnaks, это было очень полезно. –

1

Это высоко на запросе Google для этого вопроса, и есть еще не очень хороший способ сделать это опубликовано:

Если кто-то находит эту страницу через Google, как я сделал, я решил эту проблему. Вы можете использовать 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); 

Данные ссылки будут раскрыты в алфавитном порядке.

 Смежные вопросы

  • Нет связанных вопросов^_^