运行 Spring Boot fat-jar 时如何覆盖 Java 资源?
我创建了一个 Spring Boot far-jar,其中包含一个 log4j.xml 配置文件作为资源。现在,当我运行 fat-jar 时,我试图以这种方式覆盖它
$ java -cp conf/ -jar target/myapp.jar
我在conf/
文件夹中放入了一个新的 log4j.xml。但没什么,它继续使用 jar 内的资源。
运行 Spring Boot fat-jar 时如何覆盖 Java 资源?
我创建了一个 Spring Boot far-jar,其中包含一个 log4j.xml 配置文件作为资源。现在,当我运行 fat-jar 时,我试图以这种方式覆盖它
$ java -cp conf/ -jar target/myapp.jar
我在conf/
文件夹中放入了一个新的 log4j.xml。但没什么,它继续使用 jar 内的资源。
如果您的目标只是定义自己的 log4j.xml 配置文件,这可能会有所帮助:
java -Dlogging.config='/path/to/log4j2.xml' -jar target/myapp.jar
(这已经在How can I change the default location of log4j2.xml in Java Spring Boot? 中提到过?)
如果您只想通过类路径添加添加资源,可以参考
https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-executable-jar-format.html#executable-jar-
我发现的属性启动器功能loader.path
:
loader.path 可以包含目录(递归扫描 jar 和 zip 文件)、存档路径、存档中扫描 jar 文件的目录(例如,dependencies.jar!/lib)或通配符模式(用于默认 JVM 行为)。存档路径可以相对于 loader.home 或文件系统中带有 jar:file: 前缀的任何位置。