我的maven依赖项的.jar之一中有一个属性文件。我想覆盖应用程序中的值,所以我创建了一个具有相同名称和相同程序包的文件,但jar文件中的值仍在使用中。如果我从jar中删除属性文件,则会使用应用程序中文件的值。如何始终使用应用程序中的属性而不是.jar?
答案 0 :(得分:1)
只要代码从类路径中获取属性文件,它就取决于类路径的配置方式。
如果您将文件从任何jar文件中外部化-请尝试在Java命令-cp参数中将路径放置到实际文件位于其他jar文件之前的目录。
如果将文件保留在自己的jar文件中,则位于classpath中-您的jar文件必须位于具有默认属性文件的依赖项jar文件之前。
仍然这些不是很好的解决方案(有时很难控制JVM首先使用哪个路径)。
因此,请尝试查找有关依赖项jar的文档-它可能具有一个属性,可以从何处指向要使用的属性文件。
答案 1 :(得分:0)
答案 2 :(得分:0)
使用jar中的属性资源作为模板,这是将要使用的属性文件的初始文件:
Path propertiesFile = Paths.get(System.getProperty("user.home"),
".myapp/config.properties");
Files.createDirectories(propertiesFile.getParent());
if (!Files.exists(propertiesFile)) {
Files.copy(getResourceAsStrem("/config.properties"), propertiesFile);
}
Properties props = new Properties();
props.load(new FileInputStream(propertiesFile.toString());
答案 3 :(得分:0)
这个怎么样?