2010-07-15 15 views
3

Il y a un article dans le wiki Eclipse comment configurer les référentiels par défaut p2 de l'utilisateur d'une application RCP par l'ajout d'un fichier de configuration statique à votre produit:Configurer un référentiel de mise à jour p2 programme

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

Je veux faire la même chose par programmation dans une classe Java lorsque l'utilisateur change des détails de configuration. Je n'ai pas trouvé de documentation d'API p2 appropriée pour cela.

+0

Avez-vous vérifié la dernière présentation de l'API P2? (pas sûr si cela aide dans votre cas si): http://www.slideshare.net/PascalRapicault/discovering-the-p2-api – VonC

+1

Il y a 3 lignes de code dans cette présentation - pas plus de documentation de l'API. –

Répondre

4

J'ai trouvé une solution. Il est facile - malheureusement, il n'y a pas de documentation ...

// 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

Les méthodes de la classe ProvisioningHelper sont internes. Pas accessible côté :( –

4

Utilisez cette solution pour Eclipse 3.7 applications:

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

Pour ProvUI et ProvisioningUI vous devez importer des paquets org . eclipse.equinox.p2.ui et org.eclipse.equinox.p2.operations (entre autres).

+0

Thnaks, c'était très utile. –

1

Ce chiffre est élevé sur la requête Google pour cette question, et il n'y a toujours pas une bonne façon de le faire paraître:

Si quelqu'un trouve cette page via Google comme je l'ai fait, je l'ai résolu ce problème. Vous pouvez utiliser org.eclipse.equinox.internal.p2.ui.model.ElementUtils.updateRepositoryUsingElements pour définir les référentiels par programme. Le code complet peut être trouvé here.

3

En outre, vous pouvez ajouter plus d'un dépôt avec ElementUtils et vous pouvez également les trier.

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

Ces liens apparaîtront en ordre alphabétique.

Questions connexes