如何为java项目创建一个可运行的jar,使属性文件在运行时可编辑?

如何为java项目创建一个可运行的jar,使属性文件在运行时可编辑?,java,maven,plugins,jar,Java,Maven,Plugins,Jar,我的maven项目是一个独立的java应用程序。我需要在Unix设备中运行此表单。所以我制作了一个可运行的jar。但是每次运行我都要更新app.properties文件中的日期。我尝试了maven jar插件来制作一个具有所有依赖性的可运行jar。它运行正常,但无法编辑app.properties文件您可以从类路径(根包)读取属性文件,如下所示: Properties properties = new Properties(); properties.load(this.getClass().g

我的maven项目是一个独立的java应用程序。我需要在Unix设备中运行此表单。所以我制作了一个可运行的jar。但是每次运行我都要更新app.properties文件中的日期。我尝试了maven jar插件来制作一个具有所有依赖性的可运行jar。它运行正常,但无法编辑app.properties文件

您可以从类路径(根包)读取属性文件,如下所示:

Properties properties = new Properties();
properties.load(this.getClass().getResourceAsStream("/app.properties")));
java -cp app.properties:app.jar my.main.AppClass
您可以使用如下自定义类路径启动可运行jar:

Properties properties = new Properties();
properties.load(this.getClass().getResourceAsStream("/app.properties")));
java -cp app.properties:app.jar my.main.AppClass
(不能使用
java-jar
,因为
-cp
选项会被忽略)

将文件
app.properties
放在与
app.jar
相同的目录中。
app.properties
的位置将是类路径上的第一个条目,因此jar中的代码可以如上所示加载它


如果您确保jar中还有一个
app.properties
副本,那么如果缺少外部属性文件,则该副本将用作默认副本。(请注意,这只适用于完整的属性文件,而不适用于单个属性)

您不能编辑jar中的文件。您需要对其进行编程,以便它将文件从jar提取到一个文件(如果该文件尚不存在),然后始终使用该文件而不是jarred版本。然后你可以编辑文件。你可以考虑使用API来达到这个目的。