2010-07-07 5 views
1

J'utilise Maven et stocker un fichier de propriétés dans src/main/resources que je peux lire bien comme:modifier le fichier de propriétés dans META-INF

properties.loadFromXML(this.getClass().getClassLoader(). 
         getResourceAsStream("META-INF/properties.xml"); 

Est-il possible alors écrire dans ce fichier lorsqu'il est empaqueté comme un pot? Je l'ai essayé ce qui suit:

properties.storeToXML(new FileOutputStream(new File(this.getClass().getClassLoader(). 
         getResource("META-INF/properties.xml").toURI())), ""); 

Cela fonctionne dans Eclipse car il sauve le fichier à target/classes/META-INF, mais pas emballés sous forme de pot, donc est-il possible d'obtenir la même chose?

Répondre

2

Est-il possible d'écrire dans ce fichier lorsqu'il est empaqueté en tant que jar?

Réponse courte: non, ce n'est pas possible, un fichier jar est un fichier, pas un répertoire. En fait, vous n'écrivez généralement pas les fichiers de propriétés dans un fichier jar.

Vous devez placer ce fichier de propriétés sur le chemin de classe sur le système de fichiers local, en dehors d'un fichier JAR.

0

Il est toujours possible de modifier un fichier empaqueté en déballant, en réécrivant et en réemballant. Parfois, c'est l'approche la plus simple.

Un fichier Jar est essentiellement un fichier renommé .ZIP. Java a des classes pour accéder aux fichiers dans un fichier .Zip, et vous pourriez (si vous êtes suffisamment motivé) écrire vous-même un programme pour le faire. Alternativement, je suis assez sûr qu'il ya des tâches ant qui peuvent le faire aussi (pensez à l'utilisation créative de la tâche jar), et il existe des plugins POM disponibles pour exécuter des tâches ant de Maven.

Questions connexes