修改META-INF中的属性文件

时间:2010-07-07 15:34:55

标签: java maven-2 properties jar

我正在使用maven并在src/main/resources中存储属性文件,我可以读得很好:

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

当它打包成jar时,是否可以写入此文件?我尝试了以下内容:

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

这在Eclipse中有效,因为它将文件保存到target/classes/META-INF,但是在打包为jar时却没有,所以可以实现同样的目的吗?

2 个答案:

答案 0 :(得分:2)

  

当它打包成jar时,是否可以写入此文件?

简短回答:不,这是不可能的,jar文件是文件,而不是目录。实际上,您通常不会将属性文件写回jar文件。

您应该将该属性文件放在JAR之外的本地文件系统上的类路径中。

答案 1 :(得分:0)

始终可以通过解压缩,重写和重新打包来修改打包文件。有时这是最简单的方法。

Jar文件本质上是一个重命名的.ZIP文件。 Java有一个用于访问.Zip文件中的文件的类,你可以(如果有足够的动力)为自己编写一个程序来执行此操作。

或者,我非常确定有ant个任务也可以执行此操作(想想创造性地使用jar任务),并且有可用于从Maven运行ant任务的POM插件。