Externaliser chaînes plugin.xml disponibles pour les plugins en aval?
-
19-09-2019 - |
Question
Si j'ai le plugin commun, avec le plugin A et B sous forme de plugins séparés / produits, à la fois en fonction du plug-in commun.
dans le plugin commun, j'Externaliser les cordes dans plugin.xml, cela me donne% bundle-fournisseur = "My Name Company".
Dans les plugins en aval A et B, puis-je utiliser la propriété bundle-fournisseur commun pour le fournisseur. J'ai essayé préfixer l'ID du plugin commun, mais cela n'a pas fonctionné. Si cela est possible?
La solution
Pour autant que je me rappelle les plugin.properties ne sont pas disponibles en dehors du plug-in. Cependant, vous pouvez définir un type de propriétés (extension org.eclipse.osgi.util.NLS) pour charger automagiquement le fichier de propriétés et de les exposer à d'autres plug-ins.
Chaque statique propriété String dans le type sera traité à partir du fichier de propriété (s) selon les règles NLS et disponible.
Voici un exemple trivial qui va charger le fichier de propriétés et remplir les variables statiques some_property et some_other_property lorsque la classe est chargée.
public class ContentMessages extends NLS {
private static final String BUNDLE_NAME =
"name.seller.rich.content.messages"; //$NON-NLS-1$
public static String some_property;
public static String some_other_property;
static {
// load message values from bundle file
reloadMessages();
}
public static void reloadMessages() {
NLS.initializeMessages(BUNDLE_NAME, ContentMessages.class);
}
}
Autres conseils
Grande réponse riche. La seule chose que je voudrais ajouter est de faire en sorte que vous exposez le paquet / classe dans le manifeste du faisceau pour assurer d'autres paquets peuvent y accéder.