2010-07-07 120 views
1

我使用Maven和存儲特性在src/main/resources文件,我可以讀細,如:修改屬性文件中的META-INF

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

是否有可能再寫入該文件時,它被打包作爲一個罐子?我已經試過如下:

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

,因爲它是將文件保存到target/classes/META-INF這個工程在Eclipse中,而不是在一個罐子包裝的,所以是有可能實現同樣的事情?

回答

2

是否有可能寫入這個文件,當它被打包成一個jar?

簡短回答:不,這是不可能的,jar文件是一個文件,而不是一個目錄。實際上,您通常不會將屬性文件寫回到jar文件中。

您應該將該屬性文件放在JAR外部的本地文件系統上的類路徑中。

0

總是可以通過解包,重寫和重新打包來修改打包文件。有時候這是最簡單的方法。

Jar文件實質上是一個重命名文件.ZIP。 Java有一些用於訪問.Zip文件中的文件的類,並且您可以(如果有足夠的動機)爲自己編寫一個程序來執行此操作。

或者,我很確定有ant任務也可以這樣做(考慮創意使用jar任務),並且有POM插件可用於從Maven運行ant任務。