Сконфигурируйте репозиторий обновлений p2 программно - PullRequest
3 голосов
/ 15 июля 2010

В вики Eclipse есть статья о том, как настроить пользовательские p2-репозитории по умолчанию для приложения RCP, добавив статический файл conf в ваш продукт:

Equinox / p2 / Добавление самообновления в приложение RCP - Настройка пользовательских репозиториев по умолчанию

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

Ответы [ 4 ]

4 голосов
/ 12 сентября 2011

Используйте это решение для приложений на базе 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 .операции (среди прочих).

3 голосов
/ 13 августа 2013

Кроме того, вы можете добавить более одного репозитория с 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 голосов
/ 20 июля 2010

Я нашел решение.Это просто - к сожалению, нет документации ...

    // 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 голосов
/ 09 августа 2012

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

Если кто-нибудь найдет эту страницу через Google, как я, я решил эту проблему.Вы можете использовать org.eclipse.equinox.internal.p2.ui.model.ElementUtils.updateRepositoryUsingElements для программной установки репозиториев.Полный код можно найти здесь.

...