Comment puis-je obtenir le numéro de version d'une fonctionnalité Eclipse personnalisée au moment de l'exécution?

StackOverflow https://stackoverflow.com/questions/817299

Question

Je souhaite afficher le numéro de version d'une fonctionnalité Eclipse personnalisée que je développe dans la barre de titre de sa perspective. Existe-t-il un moyen d’obtenir le numéro de version à partir du plug-in d’exécution et / ou du workbench?

Était-ce utile?

La solution

Quelque chose comme:

Platform.getBundle("my.feature.id").getHeaders().get("Bundle-Version");

devrait faire l'affaire.

Remarque ( de ce fil ) qu'il ne peut pas être utilisé n'importe où dans le plugin lui-même:
this.getBundle () n'est valide que tant que AFTER super.start (BundleContext) a été appelé sur votre plugin.
Donc, si vous utilisez this.getBundle () dans votre constructeur ou dans votre début (BundleContext) avant d'appeler super.start () , il retournera null.

Si cela échoue, vous avez ici une version plus complète " version " :

public static String getPlatformVersion() {
  String version = null;

  try {
    Dictionary dictionary = 
      org.eclipse.ui.internal.WorkbenchPlugin.getDefault().getBundle().getHeaders();
    version = (String) dictionary.get("Bundle-Version"); //$NON-NLS-1$
  } catch (NoClassDefFoundError e) {
    version = getProductVersion();
  }

  return version;
}

public static String getProductVersion() {
  String version = null;

  try {
    // this approach fails in "Rational Application Developer 6.0.1"
    IProduct product = Platform.getProduct();
    String aboutText = product.getProperty("aboutText"); //$NON-NLS-1$

    String pattern = "Version: (.*)\n"; //$NON-NLS-1$
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(aboutText);
    boolean found = m.find();

    if (found) {
      version = m.group(1);
    }
  } catch (Exception e) {

  }

  return version;
}

Autres conseils

J'utilise la première option:

protected void fillStatusLine(IStatusLineManager statusLine) {
    statusItem = new StatusLineContributionItem("LastModificationDate"); //$NON-NLS-1$
    statusItem.setText("Ultima Actualizaci\u00f3n: "); //$NON-NLS-1$
    statusLine.add(statusItem);
    Dictionary<String, String> directory = Platform.getBundle("ar.com.cse.balanza.core").getHeaders();
    String version = directory.get("Bundle-Version");

    statusItem = new StatusLineContributionItem("CopyRight"); //$NON-NLS-1$
    statusItem.setText(Messages.AppActionBar_18);
    statusLine.add(statusItem);
}

Comme @zvikico le dit ci-dessus, la réponse acceptée ne fonctionne pas pour les fonctionnalités, mais uniquement pour les plug-ins (ensembles OSGi, lesquelles ne sont pas des fonctionnalités). Pour obtenir des informations sur les fonctionnalités installées, utilisez org.eclipse.core.runtime.Platform.getBundleGroupProviders () sous la forme décrit ici .

Version de ce que VonC a fourni pour récupérer le numéro de version principal d'Eclipse, mais qui ne fait pas référence aux classes internes (ce que vous devriez éviter de faire):

Platform.getBundle(PlatformUI.PLUGIN_ID).getHeaders().get("Bundle-Version");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top