製品に静的 conf ファイルを追加して、RCP アプリケーションのユーザーの p2 デフォルト リポジトリを構成する方法について、Eclipse wiki に記事があります。
Equinox/p2/RCP アプリケーションへの自己更新の追加 - ユーザーのデフォルト リポジトリの設定
ユーザーが構成の詳細を変更したときに、Java クラスでプログラムを使用して同じことを行いたいと考えています。そのための適切な p2 API ドキュメントが見つかりませんでした。
製品に静的 conf ファイルを追加して、RCP アプリケーションのユーザーの p2 デフォルト リポジトリを構成する方法について、Eclipse wiki に記事があります。
Equinox/p2/RCP アプリケーションへの自己更新の追加 - ユーザーのデフォルト リポジトリの設定
ユーザーが構成の詳細を変更したときに、Java クラスでプログラムを使用して同じことを行いたいと考えています。そのための適切な p2 API ドキュメントが見つかりませんでした。
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 (とりわけ)をインポートする必要があります。
解決策を見つけました。簡単です - 残念ながらドキュメントはありません...
// 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);
}
これは、この問題に対する Google のクエリで高く評価されており、公開されている良い方法はまだありません。
私と同じように誰かが Google 経由でこのページを見つけた場合、私はこの問題を解決しました。org.eclipse.equinox.internal.p2.ui.model.ElementUtils.updateRepositoryUsingElements を使用して、プログラムでリポジトリを設定できます。完全なコードはここにあります。