2009-10-27 3 views
0

J'essaie de lier une application tierce à notre projet mais j'ai découvert que les chemins unix de leurs fichiers de propriétés ont été codés en dur en plusieurs classes. Il est probablement possible d'apporter des changements minimes à leur configuration, alors ma question est la suivante: quelles sont les façons possibles (et les plus rapides) d'y parvenir? L'application tierce n'utilise ni la fourmi ni le ressort, mais seulement un script de compilation qui compile le code en .jar qui est appelé depuis la ligne de commande.Possibilité de faire abstraction des noms de chemin codés en dur pour le fichier de propriétés dans l'application java

+0

Plutôt prêt à l'emploi, mais est-il possible de créer des liens symboliques imitant les chemins codés en dur sur votre installation unix? – Rahul

+0

Je ne sais pas avec certitude, mais je doute que cela fonctionne sur Windows, puisque les dossiers partagés sont de la forme // chemin/va/ici, c'est-à-dire avec double barre oblique. Bu je pourrais bien me tromper là ... – davek

Répondre

3

Vous pouvez lire les fichiers de propriétés en tant que ressources. Ensuite, vous n'avez qu'à placer les répertoires contenant ces fichiers dans votre classpath.

1

Vous n'avez pas réellement dit ce que vous voulez accomplir. Est-ce que votre application détermine certains chemins et les transmet à une application tierce via une API? Quelque chose dans votre environnement (par exemple un argument de ligne de commande) spécifie l'emplacement des fichiers?

Je voudrais d'abord refactoriser leur code afin que je sache avec certitude que toutes les chaînes codées en dur sont conservées dans un endroit défini. Donc, si par exemple ils ont

readProperties("/usr/thing/propertyFileXxx.txt"); 

ou

static final String PROPERTY_XXX = "/usr/thing/propertyFileXxx.txt"; 
readProperties(PROPERTY_XXX); 

Je voudrais tout d'abord consolider à un seul accesseur pour les propriétés

readProperties(PROPERTY_XXX_ENUM); 

Alors maintenant, nous avons une seule pièce bien définie code qui détermine où obtenir les propriétés de chaque type et une liste spécifique des types de propriétés.

Ensuite, nous avons besoin d'un moyen contrôlable pour définir l'ensemble des fichiers de propriétés à utiliser lors de l'exécution. J'ai utilisé l'idée suggérée par @tangens de charger les propriétés en tant que ressources d'un répertoire spécifique ajouté au classpath.

Questions connexes