Robert
Robert

Reputation: 8619

modify properties file in META-INF

I'm using maven and storing a properties file in src/main/resources which I can read fine like:

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

Is it possible to then write to this file when it is packaged up as a jar? I've tried the following:

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

This works in Eclipse because it is saving the file to target/classes/META-INF, but not when packaged as a jar, so is it possible to achieve the same thing?

Upvotes: 1

Views: 2730

Answers (2)

Pascal Thivent
Pascal Thivent

Reputation: 570615

Is it possible to then write to this file when it is packaged up as a jar?

Short answer: no, it is not possible, a jar file is a file, not a directory. And actually, you generally don't write properties files back to a jar file.

You should put that properties file on the classpath on the local file system, outside a JAR.

Upvotes: 1

Carl Smotricz
Carl Smotricz

Reputation: 67820

It's always possible to modify a packaged file by unpacking, rewriting and re-packing. Sometimes this is the easiest approach.

A Jar file is essentially a renamed .ZIP file. Java has classes for accessing files within a .Zip file, and you could (if sufficiently motivated) write yourself a program to do this.

Alternatively, I'm pretty sure there are ant tasks that can do this too (think creative use of the jar task), and there are POM plugins available to run ant tasks from Maven.

Upvotes: 0

Related Questions