我正在使用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时却没有,所以可以实现同样的目的吗?
答案 0 :(得分:2)
当它打包成jar时,是否可以写入此文件?
简短回答:不,这是不可能的,jar文件是文件,而不是目录。实际上,您通常不会将属性文件写回jar文件。
您应该将该属性文件放在JAR之外的本地文件系统上的类路径中。
答案 1 :(得分:0)
始终可以通过解压缩,重写和重新打包来修改打包文件。有时这是最简单的方法。
Jar文件本质上是一个重命名的.ZIP
文件。 Java有一个用于访问.Zip文件中的文件的类,你可以(如果有足够的动力)为自己编写一个程序来执行此操作。
或者,我非常确定有ant
个任务也可以执行此操作(想想创造性地使用jar
任务),并且有可用于从Maven运行ant任务的POM插件。