在启动spring-boot应用程序时,如何提取与*.zip
打包在一起的spring-boot jar
文件。之所以我要提取它们,是因为这些依赖项*.zip
包含特定于环境的本机文件(window
的.dll和linux
的.so)。
如何将临时位置设置为java.libarary.path
或我可以配置该路径。
答案 0 :(得分:0)
“如何获取特定于环境的配置文件?”问题有两种典型的解决方案。
解决方案1: 使用一个包含每个环境设置的属性文件。 使用特定于环境的属性后缀。 这是一个示例:
dev.port=123456
ist.port=98745
prod.prot=90458
根据应用程序运行的环境,它将选择以下一种 端口值。
解决方案2:
Spring-Boot允许您为应用程序属性配置替代文件。
一种方法是设置
“ spring.config.location”
调用之前的值
springApplication.run
方法。
这是一个示例(长字符串包装成适合不滚动显示):
springApplicationBuilder.properties(
"spring.config.location=classpath:/default.properties," +
"/local/path/on/deploy/host/config/overrides.properties");
springApplication = springApplicationBuilder.build();
springApplication.run(argumentArray);
编辑:每个评论已更新。
考虑执行以下操作:
答案 1 :(得分:0)
不可能在运行时知道该zip的解压缩位置,这意味着您无法提前设置query = session.query(table).filter(table.news.contains([some_int])).all()
。
我建议按原样将java.library.path
和.dll
文件保留在项目中,而不要将它们打包在zip文件中。这样,您就可以在设置库路径时引用一个恒定路径。
我会避免将它们直接放置在.so
目录中,而是将其放置在单独的目录中。这只是个人喜好;我相信,如果您将本机文件放在其中,那么它将起作用,并且我相信在这种情况下,您需要设置resources
(未经测试)。
例如,我们使用Docker部署了具有本地依赖项的spring boot应用程序,我们只是将java.library.path=resources
文件作为Docker卷挂载了,可以在.so
的容器中使用。然后,我们仅将JVM args设置为包含/native
。
请注意,您可能还需要为Linux设置-Djava.library.path=/native
。 This question可能会有帮助。